WinForms: Un oggetto COM ha bisogno di uno STAThread, l'altro ha bisogno di un MTAThread. Come posso usare?

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

Domanda

Sto cercando di costruire un'applicazione WinForms con due componenti COM. Tuttavia, uno dei componenti funziona solo quando si utilizza [MTAThread] e l'altra funziona solo con [STAThread].

Quale sarebbe la soluzione consigliata è?

È stato utile?

Soluzione

forme di Windows richiede [STAThread] di essere presenti su di essa la principale punto di accesso. Funzionerà solo in singolo stato appartamento filettato. È possibile utilizzare l'oggetto COM STA sul thread dell'interfaccia utente in Windows Form, senza problemi.

L'approccio tipico per questo è di creare il proprio filo, e impostare il Thread.ApartmentState di MTA (anche se questo è il default) per il filo separato. Inizializzare e utilizzare i componenti COM MTA-Threaded dall'interno di questo thread.

ThreadStart threadEntryPoint = ...;

var thread = new Thread(threadEntryPoint);
thread.ApartmentState = ApartmentState.MTA;  // set this before you call Start()!
thread.Start();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top