我读过“BackgroundWorker”旨在被Ansyc/Await 取代。
因为我喜欢 Async/Await 的简洁外观,所以我开始将我的一些 BackgroundWorkers 转换为 Async/Await 调用。
这是我拥有的代码示例(从 UI 调用):
public async void RunFromTheUI()
{
await OtherAction();
}
public async void OtherAction()
{
var results = await services.SomeRemoteAction();
foreach (var result in results)
{
result.SemiIntenseCalculation();
Several();
Other();
NonAsync();
Calls();
}
SomeFileIO();
}
当我调用RunFromTheUI
它时,它几乎会立即返回(根据 Async 和 Await 设计)。
但是当它在完成后恢复时,services.SomeRemoteAction()
它有一个foreach
循环和另一个方法调用来运行。
我的问题是:如果该循环是性能猪,它会冻结 UI 吗? (在我把它全部放在后台工作线程中之前,它并没有减慢 UI 的速度)。
注意:我的目标是 .Net 4.0 并使用 Async Nuget 包。