2010-06-08 2 views
2

J'ai une méthode, que je souhaite exécuter sur la pompe de message d'interface utilisateur et donc procédez comme suit:BeginInvoke ne pas invoquer la méthode cible dans une version validée

private void SomeMethod() { 
    BeginInvoke(new MethodInvoker(MethodToInvoke)); 
} 

private void MethodToInvoke() { 
    // This method contains code that I wish to execute on UI message pump. 

} 

Maintenant, les travaux ci-dessus très bien quand je crée une version Debug du projet. Cependant, lorsque je crée une version Release, la méthode "MethodToInvoke" n'est pas appelée.

Quelqu'un peut-il avoir une idée pourquoi cela pourrait être?

Merci, Elan

+0

BeginInvoke n'est pas la source de ce problème. –

Répondre

1

Il se trouve l'appel à BeginInvoke vomissait une exception, que j'avais manqué. Cela explique bien sûr pourquoi la méthode cible n'a pas été exécutée.

System.InvalidOperationException: Invoke ou BeginInvoke ne peuvent pas être appelés sur un contrôle tant que le handle de fenêtre n'a pas été créé.

Il n'est pas clair cependant, pourquoi cette exception n'a pas été levée dans la version Debug.

+1

Cela pourrait être un problème de synchronisation. Dans le débogueur, il se passe d'autres choses qui pourraient donner à votre fenêtre le temps de créer. – ChrisF

Questions connexes