Ich versuche herauszufinden, ob es eine Möglichkeit gibt, zuverlässig festzustellen, wann ein verwalteter Thread kurz vor dem Abschluss steht. Ich verwende eine Drittanbieter-Bibliothek, die Unterstützung für PDF-Dokumente bietet, und das Problem ist, dass ich die PDF-Komponente explizit initialisieren muss, um die PDF-Funktionalität zu verwenden, die Arbeit auszuführen und dann die Komponente explizit zu initialisieren, bevor der Thread beendet wird . Wenn das nicht initialisierte Objekt nicht aufgerufen wird, werden Ausnahmen ausgelöst, da nicht verwaltete Ressourcen nicht ordnungsgemäß freigegeben werden. Da die Thread-Klasse versiegelt ist und keine Ereignisse hat, muss ich die Thread-Instanz in eine Klasse einschließen und nur Instanzen dieser Klasse erlauben, die Arbeit zu erledigen.Gibt es eine Möglichkeit festzustellen, wann ein .NET-Thread beendet wird?
Ich sollte darauf hinweisen, dass dies Teil einer gemeinsam genutzten Bibliothek ist, die von mehreren Windows-Anwendungen verwendet wird. Ich habe vielleicht nicht immer die Kontrolle über Threads, die Aufrufe in diese Bibliothek machen.
Da ein PDF-Objekt die Ausgabe eines Aufrufs für diese Bibliothek sein kann, und da der aufrufende Thread andere Arbeit mit diesem Objekt ausführen kann, möchte ich die Bereinigungsfunktion nicht sofort aufrufen; Ich muss es versuchen, bevor der Thread beendet wird. Idealerweise möchte ich etwas wie ein Thread.Dispose-Ereignis abonnieren können, aber das fehlt mir.
Es wird nur eine ThreadAbortException ausgelöst, wenn der Thread durch Abbruch abbricht, was meistens nicht der Fall ist. – McKenzieG1