Backgroundworker-Thread beenden

july

Erfahrenes Mitglied
Hallo zusammen,

hab gerade folgendes Problem. Ich hab Windows-Form mit einem Backgroundworker- Thread. Der Backgroundworker-Thread ist für Kommunikation zuständig, d.h. dass die meiste Zeit er im blockierten Zustand ist, bzw. ich kann ihn noch über
C++:
while (!listener.Pending())
{
...
}
ansprechen.
Nach einem Knopfdruck möchte ich den Backgroundworker-Thread beenden. Ich hab mir überlegt dass ich dafür eine Variable an den bw-thread übergebe. Die Frage ist, wie erreiche ich, dass der Bw-Thread immer den aktuellen Wert von der Variable bekommt. Vielen Dank im voraus.

Grüße July
 
Zuletzt bearbeitet von einem Moderator:

Shakie

Erfahrenes Mitglied
Ja, geht auch bei C#, siehe volatile (MSDN).
Alternativ kannst du aber die CancelAsync-Methode des BackgroundWorkers aufrufen, wenn du vorher die Eigenschaft WorkerSupportsCanellation auf True gesetzt hast. Daraufhin wird dann die CancelllationPending-Eigenschaft auf True gesetzt. Diese kannst du im Background-Thread überprüfen und entsprechend handeln. Es entspricht also deiner bisherigen Idee, nur ist sie bereits implementiert und du musst es nicht mehr selber machen :)
 

Neue Beiträge