Invoquant Répartiteur WPF avec méthode anonyme

Je viens de réaliser en C# .Net WPF 4.0 thread d'arrière-plan que cela ne fonctionne pas (erreur de compilation):

Dispatcher.Invoke(DispatcherPriority.Normal, delegate()
{
    //do stuff to UI
});

À partir de quelques exemples, j'ai trouvé qu'elle avait d'être castée comme ceci: (Action)delegate(). Cependant, dans d'autres exemples, il est coulé à d'autres classes, par exemple System.Windows.Forms.MethodInvoker.

Quelqu'un peut-il me dire quel est exactement le problème avec l'exemple ci-dessus? J'ai aussi essayé de le reproduire avec d'autres méthodes, mais il a toujours travaillé sans casting:

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

Ainsi quel est le meilleur (le plus élégant, moins redondant) pour appeler l'expéditeur, et quoi de si spécial avec elle que les délégués doivent être coulé?

OriginalL'auteur Hannobo | 2011-06-05