c# winforms com mta apartment-state

c# - Formas de pago: un objeto COM necesita un STAThread, el otro necesita un MTAThread. ¿Cómo puedo usarlos?



winforms apartment-state (1)

Los formularios de Windows requieren que [STAThread] esté presente en su punto de entrada principal. Solo funcionará en el estado de apartamento de rosca simple. Puede usar su objeto STA COM en la secuencia de interfaz de usuario en Windows Forms, sin problemas.

El enfoque típico para esto es crear su propio hilo y establecer Thread.ApartmentState en MTA (aunque este es el valor predeterminado) para el hilo separado. Inicialice y use sus componentes MTA-Threading COM desde este hilo.

ThreadStart threadEntryPoint = ...; var thread = new Thread(threadEntryPoint); thread.ApartmentState = ApartmentState.MTA; // set this before you call Start()! thread.Start();

Intento crear una aplicación Winforms con dos componentes COM. Sin embargo, uno de los componentes solo funciona cuando se utiliza [MTAThread] y el otro solo funciona con [STAThread] .

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