Hallöle,
ich habe ein recht merkwürdiges Problem bei Multithreading:
Ich habe eine statische Klasse. Als Klassenvariable habe ich ein Thread-Array
threads und einen separaten Thread
threadManager. Wird eine Methode der Klasse aufgerufen, startet der threadManager. In diesem werden dann wiederum die Threads aus dem Array threads gestartet (jeder Prozessor ein Thread, in meinem Fall 8 ).
Die Threads arbeiten fröhlich vor sich hin (jeder Thread macht im Prinzip das Gleiche).
Beim Debuggen ist mir jedoch aufgefallen, dass nach kurzer Zeit (manchmal sogar direkt bei Thread.Start()) ein oder zwei Threads einfach abschmieren und weg sind, ohne dass ich eine Fehlermeldung erhalte. Wenn ich mit dem Debugger dann das Array unter die Lupe nehme und die verschwundenen Threads untersuche, erhalte ich bei der Eigenschaft "ApartmentState" folgende Exception:
| Zitat: |
| 'threads[7].ApartmentState' löste eine Ausnahme des Typs 'System.Threading.ThreadStateException' aus |
An den ApartmentStates drehe ich aber nie rum. Die sind immer auf MTA.
Hat jemand eine Ahnung warum einzelne Threads (manchmal schon direkt beim Start) hier abschmieren? Die Threads sind übrigens nicht aus dem Threadpool.
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler