Entwickler-Ecke

Basistechnologien - Threadpool beenden/freigeben?


BlackMatrix - So 02.05.10 13:22
Titel: Threadpool beenden/freigeben?
Hi.

Folgendes Codebeispiel:


C#-Quelltext
1:
2:
3:
4:
foreach (string user in users)
ThreadPool.QueueUserWorkItem(aufruf, user);

Thread.Sleep(zeit);


Nun soll nach der Wartezeit der ganze Threadpool beendet werden, egal wie weit die Threads gekommen sind. Wie ist das möglich?


Kha - So 02.05.10 13:34

Thread.Abort kannst du nur mit eigenen Threads benutzen. Berechnungen irgendwo mittendrin abbrechen zu lassen ist aber sowieso relativ gefährlich, deswegen wurde mit dem PFX aus .NET 4 CancellationToken eingeführt. Auch ohne .NET 4 würde ich eher ein cancel-Flag periodisch überprüfen und dann ggf. die Berechnung kontrolliert abbrechen.


BlackMatrix - So 02.05.10 13:53

Okay, vielen Dank. Wobei ich sagen muss, dass die Methode nur nebensächliches Zeugs erledigt und von mir aus aus gerne abgebrochen werden können, solange das Programm stabil bleibt.