我有一个类似于 格雷格 · D 在这里讨论(减去 IsHandleCreated 检查)的 SafeInvoke Control 扩展方法。
我从 System.Windows.Forms.Form
打电话给你,内容如下:
public void Show(string text) {
label.SafeInvoke(()=>label.Text = text);
this.Show();
this.Refresh();
}
有时(这个调用可以来自各种线程) ,这会导致以下错误:
发生
System.InvalidOperationException
在创建窗口句柄之前,不能对控件调用 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
这是怎么回事,我该怎么补救?我知道这不是一个形式创造的问题,因为有时候它会工作一次,失败的下一次所以问题可能是什么?
附言。我真的很不擅长使用 WinForms,有人知道一系列解释整个模型以及如何使用它的文章吗?