dispatcher.invoke c#
No se puede convertir la expresión lambda para escribir ''System.Delegate'' (3)
A menos que me haya perdido algo, todo lo que nos ha dicho es que esta no es una aplicación de WPF . No creo que el Dispatcher sea la clase correcta para usar.
Si esta es una aplicación de WinForm, se puede acceder a su subproceso de interfaz de usuario a través del WindowsFormsSynchronizationContext
Ninguno de estos funciona:
_uiDispatcher.Invoke(() => { });
_uiDispatcher.Invoke(delegate() { });
Todo lo que quiero hacer es invocar un método en línea en mi hilo principal de IU. Así que llamé esto al hilo principal:
_uiDispatcher = Dispatcher.CurrentDispatcher;
Y ahora quiero ejecutar algún código en ese hilo desde otro hilo. ¿Cómo lo hago? ¿Estoy usando la sintaxis incorrecta?
Tenga en cuenta que esta no es una aplicación WPF; Hice referencia a WindowsBase
para poder acceder a la clase Dispatcher
.
El problema es que no proporciona el tipo exacto de delegado que desea invocar. Dispatcher.Invoke
solo toma un Delegate
. ¿Es una Action<T>
? Si es así, ¿qué es T
? ¿Es un MethodInvoker
? Action
? ¿Qué?
Si su delegado no toma argumentos y no devuelve nada, puede usar Action
o MethodInvoker
. Prueba esto:
_uiDispatcher.Invoke(new Action(() => { }));
this.Dispatcher.Invoke((Action)(() => { textBox1.Text = "Test 123"; }));