我知道 .Join() 会导致线程暂停并等待线程完成其工作,但是如何避免 UI 被卡住?这就是我的代码的样子”
Thread dataThread = new Thread(()=> data = getData(id));
dataThread.Start();
dataThread.Join();
Thread storingThread = new Thread(()=> storeData(data));
storingThread.Start();
我需要 Join,因为第一个线程返回一个包含需要通过第二个线程存储的数据的对象。但这会导致 UI 卡住。我怎样才能在后台线程中实现这些?你们认为我应该改变什么?
最佳答案
如果您使用的是 .Net framework >= 4.5,则可以使用 Tasks
await Task.Run(() => data = getData(id));
await Task.Run(() => storeData(data));
或者在一个命令中
await Task.Run(() => storeData(getData(id)));
如果你不必等到它完成你也可以这样做:
Task.Run(() => storeData(getData(id)));
关于c# - 线程 : Application Freezes after using Thread. 加入(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276514/