2012-01-13 62 views

回答

1

您不容访问控制从比其他线程GUI线程,你需要使用InvokeRequired检查是否属于这种情况。如果是这样,你需要在GUI线程上调用你的调用。

没有上下文很难分辨,但也许你应该问问自己是否需要异步运行这些代码。

+1

在这种情况下,他*知道*他不在GUI线程上(他在BackgroundWorker中)。无需执行检查。 – 2012-01-13 20:34:16

+0

好点,有一个快速回答:-) – diggingforfire 2012-01-13 20:35:51

0

试试这个:

this.Invoke(new System.Action(()=>this.Hide())); 

您不得从非运行窗体的消息泵的另一个线程访问UI控件(或他们的父母形式)(通常被称为它的UI线程)。在这种情况下,this引用表单本身。

+0

谢谢克里斯,但这个显示错误:不能转换lambda表达式键入'System.Delegate',因为它不是一个委托类型 – 2012-01-13 20:36:15

+0

编辑相应。 – 2012-01-13 20:37:30

+0

感谢克里斯我解决它:> this.Invoke((Action)delegate {this.Hide();}); – 2012-01-13 20:40:16

相关问题