下面是一个简单的代码来解释
Async-Await
public async Task Main()
{
var result = await Background("Test");
// Update Ui here, its on Ui thread
}
// Executed Asynchronously in the Background
public async Task<string> Background(string text)
{
return await Task.FromResult(text);
}
-
Background
-
背景
方法,结果可以在控件上更新,其自动Ui线程
-
Task Parallel Library
显式地处理数据,然后更新结果
-
await
仍然是一个阻塞调用,虽然它将释放调用上下文,这意味着Ui不会冻结,它仍然可以访问,但是可以使用
Task.Run
,当返回时可以使用它来更新Ui,尽管您必须始终阻止Main/Ui线程退出
public async void Button1_Click(object sender,EventArgs e)
{
await (Async Method Call)
// Update Ui
}