unknown: C# - Schleife funktioniert nicht ?

Beitrag lesen

Mein Versuch den Fehler zu lokalisieren ist leider kläglich gescheitert.

Wenn du nicht n-fach alles in eine Zeile schreiben würdest, sondern 1 mal auf mehrere Zeilen aufteilen würdest, könnte man das debuggen.

Wenn ich nach dem (einzigen) Durchlauf der Schleife [also nach dem letztem Threat.Start, in dem Fall der t19] den Status z.B. vom t0 ausgebe erhalte ich Stopped.

Also läuft irgendwas schief!

Nach meiner Logik sollte also die Schleife (da ja der Wert > 0 ist) weiter durchlaufen, was aber nicht erfolgt.

Sicher?

Z.Zt. starte ich das ganze mit dem Zählwert 57, es erfolgt der Threatstart 0-19 und nachdem alle Threats abgearbeitet worden sind, bin ich bei einem Zähler von 37

Dann sollte die Schleife ein 2. mal durchlaufen werden. Da hilft ein Breakpunkt.

(der Zähler wird im übrigen am Ende der Methode die durch den jw. Threat aufgerufen wird, heruntergezählt.

Das ist aber nicht threadsafe. In c++ gäbe es da wenigstens die Interlocked... Methoden.
Wann der Thread am Ende angekommen ist kannst du außerdem nicht wissen, da kann deine Schleife schon ein paar mal umsonst gekreiselt haben.

Das Teil startet alle Threats, arbeitet diese (übrigens korrekt) ab und wirft dann besagte Exception und nichts geht mehr (kein Absturz, sieht eher so aus als würde er die While ohne Beachtung der IFs unendlich durchlaufen).

Das ist was anderes als du oben beschrieben hast. Wie ist denn t3.ThreadStat?

oder ich verstehen, was ich falsch gemacht habe...

Ich kenne C# nicht, aber auf jeden Fall würde ich die Synchronisation nicht über einen Counter machen. Du brauchst eine Semaphore, mit der du den Mainthread schlafen legst, bis ein Thread NACH (das ist unter Umständen nicht so einfach) Beendigung das Event zum Aufwachen schickt