У меня есть метод расширения SafeInvoke Control, аналогичный тому, который описан здесь, здесь обсуждается Greg D (минус проверка IsHandleCreated).
Я вызываю его из System.Windows.Forms.Form следующим образом:
public void Show(string text) {
    label.SafeInvoke(()=>label.Text = text);
    this.Show();
    this.Refresh();
}
Иногда (этот вызов может исходить из разных потоков), это приводит к следующей ошибке:
System.InvalidOperationExceptionпроизошло
Message= "Invoke или BeginInvoke нельзя вызвать в элементе управления до тех пор, пока не будет создан дескриптор окна."
Source= "System.Windows.Forms"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
Что происходит и как я могу это исправить? Я знаю, насколько это не проблема создания формы, поскольку иногда она будет работать один раз и не будет работать в следующий раз, так что может быть проблема?
PS. Я действительно ужасен в WinForms, кто-нибудь знает хорошую серию статей, в которых объясняется вся модель и как работать с ней?