2017-07-27 4 views
0

Ich brauche einige TCP-Kommunikation in einer ASP.net Web App.Threading im ASP.net-Lebenszyklus

Ich habe einen funktionierenden Prototyp meines Codes erstellt, der Winforms mit dem Server kommuniziert. Ich würde diesen Code jetzt in meine Web-App implementieren, und ich bin nicht sicher, was der beste Weg wäre, dies zu tun.

Diese Frage bezieht sich speziell auf den Thread-Lebenszyklus in Bezug auf die Lebensdauer der ASP-Seiten.

Ich denke daran, einen Thread abzufeuern, der die TCP-Verbindung ausführt und Ereignisse vom TCP-Server abhört.

Wenn ich einen Thread aus meiner ASP.net-Webanwendung spawne, was ist der Lebenszyklus dieses Threads? Wird es weiterhin "verwaist" laufen, wenn der Seitenlebenszyklus neu erstellt wird und ein Post-Back, Refresh usw.? Oder wird die Seite dies irgendwie bereinigen, wenn der Lebenszyklus beim Postback/Refresh neu erstellt wird?

Ich möchte meinen Thread ausführen, bis ich es manuell stoppen möchte.

Ich experimentiere mit verschiedenen Optionen, aber ich möchte einige Ideen auf dem "richtigen" Weg, um mein Endergebnis zu erreichen.

(P.S. mein Thread aktualisiert Anwendungsvariablen mit relevanten Daten vom TCP-Server). Daten, die auf mehreren Seiten in dieser Web-App verwendet werden sollen.

Meine anderen Ideen sind, eine eigenständige Desktop-App/einen Desktop-Dienst auszuführen, um die Daten zu sammeln und in die IIS-Anwendungspool-Sitzung einzubinden. (Aber das ist mein letztes Mittel)

+0

Mögliches Duplikat von [Wie verwendet man Threads in asp.net?](https://stackoverflow.com/questions/14296188/how-to-use-threads-in-asp-net) – mjwills

+4

Sie wären besser dran hosten Sie dies in einem Windows-Dienst als in Asp.Net, damit Sie sich nicht darum kümmern müssen, dass die appdomain in regelmäßigen Abständen entladen wird. Ihr letzter Ausweg sollte eigentlich Ihr erster Ausweg sein. – Amy

+2

Websites, die in IIS ausgeführt werden, sind nicht der richtige Ort dafür. Erstellen Sie einen Dienst, der eine Verbindung zum TCP-Host herstellt, und speichert Aktualisierungen lokal (eine Art Datenbank?) Dann muss die Website das abfragen. – Will

Antwort

1

Um Ihre Fragen zu beantworten:

Wenn ich laichen tun einen Thread von meinem ASP.net Web-App, was ist der Lebenszyklus dieses Threads?

Es wird ausgeführt, bis es fertig ist, oder bis der Prozess abgeschlossen ist, oder bis Sie es ausdrücklich zu Ende sagen. Dies ist das gleiche wie ein Thread in einer anderen Anwendung.

Wird weiterhin "verwaist" ausgeführt, wenn der Seitenlebenszyklus neu erstellt wird und ein Post-Back, Refresh usw.?

Der Seitenlebenszyklus ist völlig irrelevant. Der Thread wird weiterhin unabhängig von der Seite ausgeführt.

Oder wird die Seite dies irgendwie bereinigen, wenn der Lebenszyklus beim Postback/Refresh neu erstellt wird?

Siehe vorherige Antwort.

Noch einmal, ich schlage vor, dass Sie diesen Weg nicht nehmen und Ihr Threading-Szenario in einem Windows-Dienst implementieren.