我有一个托管WCF服务的Winforms应用程序。在我的应用程序中使用另一个线程
里面我Connect
按钮点击事件,连接是通过BackgroundWorker
为了打开我的UI,而这仍然连接超级过程响应(1 - 2秒)和BackgroundWorker_RunWorkerCompleted
事件之后去我的其他类,做我的东西。
最近我加几Thread.Sleep
在调试时,请注意,不冻结我的UI所以以后我搜索我发现,也许是因为BackgroundWorker
线程(是吗?)
在我的应用我有表单类和包含几个事件的另一个类,表格类订阅这些事件,并以这种方式更新我的UI:
this.Invoke((MethodInvoker)delegate
{
// Update UI
});
所以我的问题是:这是确定以使用另一个线程以这种方式和使用this.Invoke
?
或者我需要以另一种方式做到吗?
即使寿你的做法是正确的,如果你想知道一个不同的方式来处理用户界面更新,而无需使用调用我会推荐阅读有关的SynchronizationContext。 http://www.codeproject.com/Articles/31971/Understanding-SynchronizationContext-Part-I –