【发布时间】:2015-05-16 13:52:16
【问题描述】:
我知道 .Join() 会导致线程暂停并等待线程完成其工作,但是如何避免 UI 被冻结?这就是我的代码的样子”
Thread dataThread = new Thread(()=> data = getData(id));
dataThread.Start();
dataThread.Join();
Thread storingThread = new Thread(()=> storeData(data));
storingThread.Start();
我需要加入,因为第一个线程返回一个包含需要通过第二个线程存储的数据的对象。但这会导致 UI 冻结。我怎样才能在后台线程中实现这些?你们觉得我应该改变什么?
【问题讨论】:
-
您使用的是哪个版本的框架? >= 4.5?
-
是的,伙计@FlorianMoser
-
您可能想探索 async / await 关键字的功能。我会在几秒钟内发布答案
-
@FlorianMoser 抱歉,我正在运行 4.0。但是是的,请告诉我:)
-
为什么创建一个线程只为了立即
Join呢?如果您不熟悉线程并正在创建 WinForms 应用程序,请考虑使用BackgroundWorker
标签: c# .net multithreading .net-4.0