c# multithreading dispatcher

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"; }));