Thread killen
-
Hallo Leute,
ich habe zurzeit ein ziemliches Problem:
Ich starte aus meinem Programm heraus einen Thread der mit recv Nachrichten holt und diese bearbeitet.
Das Problem dadran ist, dass ich ihn nicht wieder beenden kann, weil recv ja ein Blocking Call ist und die CLR Threads nicht killen kann wenn diese noch auf ne Windows-Message warten...
Kann man vielleicht irgendwie einen Timeout für recv festlegen?
-MfG, Rodney
-
Kein guter Stil. Threads sollten sich immer "freiwillig" beenden.
Ich kenne dein komisches recv jetzt nicht, aber Nachrichtenauswertung sollte man mit Application.DoEvents() oder Application.Run() (<- heißt das so?) machen. DoEvents ist nonblocking, das andere blocking, du hast also alles was du brauchst.
-
Optimizer schrieb:
Kein guter Stil. Threads sollten sich immer "freiwillig" beenden.
Ich kenne dein komisches recv jetzt nicht, aber Nachrichtenauswertung sollte man mit Application.DoEvents() oder Application.Run() (<- heißt das so?) machen. DoEvents ist nonblocking, das andere blocking, du hast also alles was du brauchst.Hmm versteh deine Antwort jetzt nicht wirklich, vielleicht hab ich mich undeutlich ausgedrückt:
Ich habe einen Thread der auf Netzwerkpakete wartet (UDP-Socket), dieser soll die ganze Zeit nebenher laufen aber dann natürlich beendet werden, wenn ich die restliche Anwendung schließe.
MfG, Rodney
-
Socket schließen, dann fliegt wahrscheinlich ne Exception, wenn der Thread gerade geblockt ist. Alternativ kannst du einen nonblocking Socket Channel verwenden.
-
Optimizer schrieb:
Socket schließen, dann fliegt wahrscheinlich ne Exception, wenn der Thread gerade geblockt ist. Alternativ kannst du einen nonblocking Socket Channel verwenden.
nonblocking gibts bei UDP also verbindungslosen Sockets auch??
Das mit dem Socket schließen ist ne gute Idee, da bin ich nicht drauf gekommen, DANKE