2012-09-21 49 views
0

我有它的聚焦状态使用的方法中,检查形式true或false状态:访问Control.Focused从另一个线程

if (!this.Focused) 
{ 
    //do something 
} 

然而,这也需要从另一个工作线程检查,和我如果我从另一个线程调用(!this.Focused),则会发生跨线程违规。如何从另一个线程访问this.Focused布尔值的真或假状态?我熟悉使用委托从其他线程更新表单控件,但我遇到了一个真正的问题。我错过了什么?任何帮助是极大的赞赏。

回答

1

这是怎么回事?

bool focused = false; 

this.Invoke((MethodInvoker)delegate 
{ 
    focused = controlname.Focused; 
}); 
+0

非常感谢,问题解决! – user1689663

2

这是完全一样的 - 你只需要使用的Invoke的返回值,这是委托的返回值:

Func<bool> func =() => this.Focused; 
var focused = (bool) Invoke(func);