C# async, await
本文关键字:await async | 更新日期: 2023-09-27 18:16:34
我有一个简单的代码,我想异步执行:
public async Task EncryptAsync()
{
for (int i = 0; i < 10; i++)
{
// shift bytes
// column multiplication
// and so on
}
}
这就是我调用上面方法的方式:
private async void Encryption()
{
ShowBusyIndicator();
await encryptor.EncryptAsync();
HideBusyIndicator();
}
关键是,当我在此方法中添加await Task.Delay(1000);
时,显示busi指示符,但在1秒后,应用程序锁定并同步等待加密完成。如果我删除Task。延迟,应用程序锁定并在操作完成后解锁。
在我的情况下如何正确使用await和async ?我想简单地异步执行方法encryptor.EncryptAsync()
async
/await
关键字不允许您创建新的异步;相反,它们只是允许您等待现有的异步操作完成。
你想在后台线程上运行你的cpu绑定操作,以避免阻塞UI。
为此,在传递给Task.Run()
的lambda中调用同步阻塞方法。
您可以使用await
来等待结果异步操作(Task
实例)。