J'ai un SafeInvoke de Contrôle de la méthode d'extension similaire à celui Greg d'discute ici (moins le IsHandleCreated vérifier).
Je suis de l'appeler à partir d'un System.Windows.Forms.Form
comme suit:
public void Show(string text) {
label.SafeInvoke(()=>label.Text = text);
this.Show();
this.Refresh();
}
Parfois, cet appel peut provenir d'une variété de threads) présente les résultats dans l'erreur suivante:
System.InvalidOperationException
s'est produite
Message
= "Invoke ou BeginInvoke ne peut pas être appelée sur un contrôle jusqu'à ce que la poignée de la fenêtre a été créé."
Source
= "Le système de.De Windows.Les formes"StackTrace: at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) at System.Windows.Forms.Control.Invoke(Delegate method) at DriverInterface2.UI.WinForms.Dialogs.FormExtensions.SafeInvoke[T](T control, Action`1 action) in C:\code\DriverInterface2\DriverInterface2.UI.WinForms\Dialogs\FormExtensions.cs:line 16
Ce qui se passe et comment puis-je résoudre ce problème? Je sais que beaucoup comme il n'est pas un problème de création de forme, étant donné que parfois, il fonctionnera une fois et ne parviennent pas, la prochaine fois donc, ce que pourrait être le problème?
PS. Vraiment, je suis vraiment nul en WinForms, personne ne sait une bonne série d'articles qui explique l'ensemble de la maquette et de la façon de travailler avec elle?