Zitat von
nahpets:
Bei Deiner Variante werden die Threads wohl von außen gestoppt und Du musst sicherstellen, dass sie auf das Beenden auch zeitnah reagieren. Besteht da nicht eventuell die Gefahr, dass Du das Problem auf eine andere Stelle verschiebst, wenn gerade in einem Thread eine For-Schleife abgearbeitet wird. Ist da sichergestellt, das der Thread auch "mitten" in der For-Schleife beendet wird. Besteht da dann die Möglichkeit, dass inkonsistente Daten übrig bleiben?
das würde dann genau so sein... nur lieber da als anderswo
vermeiden kann mann das ja sowieso nicht, dass gewisse aktionen inmitten unterbrochen werden müssen.
Zitat von
nahpets:
Meine (subjektive) Meinung ist: Über einen Schalter kontrolliert aus einer Routine aussteigen, um noch eine bestehende Aufgabe abzuschließen.
naja, irgendwie kann ich mich mit dieser methode auch nicht wirlklich anfreunden, ist irgendwie unschön. Diese Abfrage müsste dann ca. 30-Mal irgendwo in meinem Code stehen und da graut mir irgendwie davon. Nundenn, wenn das die Offizielle Lösung ist mache ich das gerne so. Ich würde aber auch noch gerne ein paar andere Meinungen hören, ich kann mir irgendwie nicht vorstellen, dass ich der Einzige bin der schon mal vor diesem Problem gestanden ist.
Zitat von
nahpets:
Du gehst ja im Prinzip her und beendest die Threads nacheinander. Der zweite Thread erfährt also erst nach dem erfolgreichen Beenden des ersten Threads, dass er sich beenden soll, der Dritte nach dem Zweiten....
TerminateThread teilt dem Betriebssystem mit, das der Thread beendet werden soll und kehrt dann zurück, von dem her sollte das eigentlich gehen...
Zitat von
nahpets:
Bei einem anderen Dienst habe ich kürzlich (zufällig) festgestellt, dass Windows 30 Sekunden wartet, bevor es einen Dienst "mit der Keule" erschlägt.
und wie hast du die Problematik anschliessend gelöst?