在我的应用程序中使用另一个线

时间:2013-10-17 03:27:42

标签: c# multithreading winforms wcf

我有一个托管WCF服务的Winforms应用程序。

在我的Connect按钮点击事件中,连接正在通过BackgroundWorker打开,以便我的UI响应,而此连接仍在进行中(1 - 2秒)和BackgroundWorker_RunWorkerCompleted之后活动去我的其他班级做我的东西。

最近我在调试时添加了几个Thread.Sleep,并注意到它没有冻结我的UI所以我搜索后发现这可能是因为BackgroundWorker线程(我是对的吗?)

在我的应用程序中,我有表单类和另一个包含多个事件的类,表单类订阅这些事件并以这种方式更新我的UI:

        this.Invoke((MethodInvoker)delegate
        {
            // Update UI
        });

所以我的问题是:以这种方式使用另一个线程并使用this.Invoke是否可以?

或者我是否需要以其他方式进行此操作?

1 个答案:

答案 0 :(得分:2)

是的,这是可以的,它是在async出现之前发明的背景工作者。

我建议使用async