Ich habe eine Multithreading-Anwendung mit .NET 4.0. Manchmal flippt diese COM-Anwendung referenziert aus und einfach stoppen.
Ich möchte wissen, wie ich überprüfen kann, ob dieser Prozess gerade im fraglichen Thread läuft.
Ejemplo:
Aus der Hauptanwendung ausüben:
ThreadedApp app = new ThreadedApp();
System.Threading.Thread thread = new System.Threading.Thread(x => app.Start());
thread.Start();
Business Object ausüben:
class ThreadApp
{
public void Start()
{
COMobject app = new COMobject(); // <- COM interop that starts up the COM app
foreach (var item in items)
{
new ThreadProcess().Process(ref app, item);
}
}
}
class ThreadProcess
{
public void Process(ref COMobject app, SomeItem item)
{
if (app == IVE_DIED_AND_I_DONT_KNOW_WHY) // How do I check this?
{
app = new COMobject();
}
// Process stuff
}
}
Die Hauptanwendung kann N Threads abspalten und somit auch N COM-Objekt-Anwendungen abspalten. Wenn Sie den Task-Manager beobachten, sehen Sie die COMobject.exe für jeden laufenden Thread aufgelistet.
Ich versuche, von Try/Catch-Blöcken wegzukommen, um die Leistung zu erhöhen, weiß aber nicht, wie man den Zustand der COM-Anwendung vom aufrufenden Thread aus überprüft.
Ich hoffe, das macht Sinn und TIA.