Zitat von
tobias_sdr:
Der Zugriff auf den Pool erfolgt über Semapore und das Lesen und Schreiben über
Mutex. Ich dachte auch, dass der Fehler da liegt.
Ich würde die Semapore durch TCriticalSection ersetzen und wirklich jeden lesenden und schreibenden Zugriff auf den Pool darüber nur innerhalb von Enter und Leave.
WaitForSingleObject(ajobList.fEventJob.Handle,5000 );
Ist sichergestellt, das wirklich alle Jobs bereits durch einen Thread bearbeitet werden/wurden?
WaitForSingleObject(MyThreadSemaphore.fEventThread .Handle,5000);
Ist sichergestellt, das wirklich der letzte Thread beendet wurde?
Zitat von
tobias_sdr:
Wenn ich aber die Berechnungseinheit der Threads in eine
Exception kapsele wird der Fehler abgefangen.
Es tritt also tatsächlich ein Fehler auf, wie lautet die Fehlermeldung? Zugriffsverletzung?
Ich würde den Fehler auf jeden Fall bei den oben genannten Punkten suchen.
Zitat von
tobias_sdr:
Zu deinem Vorschlag
Zitat:
Allerdings würde ich es vermeiden den Referenzzähler von Strings, Arrays oder Interfaces dabei zu verändern.
Leider weiß ich nicht, wie ich das machen soll?
Zitat:
Wenn solche Werte als Parameter übergeben werden, dann nach Möglichkeit immer als const-Parameter.
Das kann aber kein Ursache für die
Exception sein.