c# wpf winforms sta

c# - WPF con Windows Forms-STAThread



winforms (1)

Soy un novato en WPF y tengo un par de preguntas sobre WPF y la integración de Windows Forms.

Tengo una aplicación existente de Visual C # Windows Forms. Me gustaría integrarlo con una ventana de WPF, que se puede mostrar con un clic de botón. Esto no fue posible ya que WPF espera que el hilo de llamada sea un STAThread y, de forma predeterminada, WinForm supone que el hilo es un MTAThread. Intenté engendrar un nuevo hilo con un estado de apartamento de STAThread para llamar a la interfaz de usuario de WPF pero eso no funcionó. Traté de usar el método Dispatcher.BeginInvoke y Background Worker también, pero ninguno de ellos resolvió el problema.

1) ¿Podemos hacer una llamada a la ventana / control de WPF sin marcar Main como STAThread? Si es posible, ¿alguien puede indicarme una dirección correcta? 2) Si la única forma de lograr esto es hacer que el hilo principal sea un STATread, ¿habrá algún impacto en el rendimiento / capacidad de respuesta general de la aplicación?

Gracias por adelantado.


Creo que la solución más simple es hacer que su subproceso WinForms se ejecute en una STA. No hay nada de malo en tener una aplicación STA de winforms (de hecho, a menudo es la predeterminada).

Puede solucionar esto agregando la siguiente línea al método principal de su programa:

[STAThreadAttribute] static void Main(string[] args)