我有一个托管WCF服务的Winforms应用程序。
在我的Connect
按钮点击事件中,连接正在通过BackgroundWorker
打开,以便我的UI响应,而此连接仍在进行中(1 - 2秒)和BackgroundWorker_RunWorkerCompleted
之后活动去我的其他班级做我的东西。
最近我在调试时添加了几个Thread.Sleep
,并注意到它没有冻结我的UI所以我搜索后发现这可能是因为BackgroundWorker
线程(我是对的吗?)
在我的应用程序中,我有表单类和另一个包含多个事件的类,表单类订阅这些事件并以这种方式更新我的UI:
this.Invoke((MethodInvoker)delegate
{
// Update UI
});
所以我的问题是:以这种方式使用另一个线程并使用this.Invoke
是否可以?
或者我是否需要以其他方式进行此操作?