Pregunta

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

Tengo una aplicación de formularios Windows Forms de Visual C #. 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 subproceso de llamada sea un STAThread y, de forma predeterminada, WinForm asume que el subproceso es un MTAThread. Intenté generar un nuevo hilo con un estado de apartamento de STAThread para llamar a la UI de WPF pero eso no funcionó. Intenté 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 el Main como un STAThread? Si es posible, ¿alguien puede indicarme una dirección correcta? 2) Si la única forma de lograr esto es hacer que el subproceso principal sea un STAThread, ¿habrá algún impacto en el rendimiento / capacidad de respuesta general de la aplicación?

Gracias de antemano.

¿Fue útil?

Solución

Creo que la solución más sencilla es hacer que el hilo de WinForms se ejecute en una STA. No hay nada de malo en tener una aplicación de winforms para subprocesos STA (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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top