Winforms: Un objeto COM necesita un STAThread, el otro necesita una MTAThread. ¿Cómo puedo usar?

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

Pregunta

Estoy tratando de construir una aplicación Windows Forms con dos componentes COM. Sin embargo, uno de los componentes del sistema sólo funciona cuando se utiliza [MTAThread] y el otro sólo funciona con [STAThread].

¿Cuál sería la solución recomendada?

¿Fue útil?

Solución

formas Windows requiere [STAThread] estar presente sobre el mismo de punto de entrada principal. Sólo funcionará en el estado individual de apartamentos roscado. Puede utilizar su objeto COM STA en el subproceso de interfaz de usuario de Windows Forms, sin problemas.

El enfoque típico de esto es para crear su propio hilo, y establecer el Thread.ApartmentState para MTA (aunque este es el valor predeterminado) para el hilo separado. Inicializar y utilizar sus componentes COM-MTA roscado dentro de este hilo.

ThreadStart threadEntryPoint = ...;

var thread = new Thread(threadEntryPoint);
thread.ApartmentState = ApartmentState.MTA;  // set this before you call Start()!
thread.Start();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top