Invocación de WPF Dispatcher con método anónimo
Me acabo de dar cuenta en un subproceso de fondo C # .Net 4.0 WPF de que esto no funciona (error del compilador):
Dispatcher.Invoke(DispatcherPriority.Normal, delegate()
{
// do stuff to UI
});
De algunos ejemplos descubrí que tenía que ser lanzado así:(Action)delegate()
. Sin embargo, en otros ejemplos se lanza a otras clases, p. @System.Windows.Forms.MethodInvoker
.
¿Alguien puede decirme qué está mal exactamente con el ejemplo anterior? También intenté reproducirlo con otros métodos, pero siempre funcionaba sin transmitir:
delegate void MyAction();
void Method1(MyAction a) {
// do stuff
}
void Method2(Action a) {
// do stuff
}
void Tests()
{
Method1(delegate()
{
// works
});
Method2(delegate()
{
// works
});
Method1(() =>
{
// works
});
Method2(() =>
{
// works
});
Method2(new Action(delegate()
{
// works
}));
new System.Threading.Thread(delegate()
{
// works
}).Start();
}
Entonces, ¿cuál es la mejor manera (más elegante, menos redundante) de invocar al Despachador, y qué tiene de especial que los delegados deben ser emitidos?