我在 Windows 窗体中有一些代码,有点像这样:
button1_Click(object sender, EventArgs e)
{
Widget myWidget = new Widget(...bunch of constructor parameters...);
myWidget.Property1 = "blah"; // other properties get set here too...
myWidget.InterestingThingHappened += InterestingThingHappened;
Parallel.Invoke(myWidget.RunInterestingLongRunningProcess());
}
private void InterestingThingHappened(object sender, EventArgs e)
{
myLabel.Invoke(new Action(() => myLabel.Text = "An interesting thing happened!"))
}
当我运行它时,应用程序会冻结,直到我在任务管理器中将其杀死。然后我看到一个异常说“在创建窗口句柄之前不能在控件上调用 Invoke 或 BeginInvoke。” button1_Click
显然是一个控制事件处理程序,因此在此代码运行之前完全创建了表单。我完全不知道这意味着什么。任何人都可以帮忙吗?