WinForms: Ein COM -Objekt braucht einen Stathread, das andere braucht einen Mthead. Wie kann ich sie verwenden?

StackOverflow https://stackoverflow.com/questions/1521816

Frage

Ich versuche, eine WinForms -Anwendung mit zwei COM -Komponenten zu erstellen. Eine der Komponenten funktioniert jedoch nur bei Verwendung [MTAThread] und der andere funktioniert nur mit [STAThread].

Was wäre die empfohlene Lösung?

War es hilfreich?

Lösung

Windows Forms erfordert, dass [Stathread] auf seinem Haupteintrittspunkt vorhanden ist. Es wird nur im einzelnen Faden -Wohnungszustand funktionieren. Sie können Ihr STA -COM -Objekt im UI -Thread in Windows -Formularen ohne Probleme verwenden.

Der typische Ansatz hierfür besteht darin, Ihren eigenen Thread zu erstellen und die festzulegen Thread.APARTmentState an MTA (obwohl dies der Standard ist) für den separaten Thread. Initialisieren und verwenden Sie Ihre MTA-Threaded COM-Komponenten innerhalb dieses Threads.

ThreadStart threadEntryPoint = ...;

var thread = new Thread(threadEntryPoint);
thread.ApartmentState = ApartmentState.MTA;  // set this before you call Start()!
thread.Start();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top