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()

C# async, await

async/await关键字不允许您创建新的异步;相反,它们只是允许您等待现有的异步操作完成。

你想在后台线程上运行你的cpu绑定操作,以避免阻塞UI。
为此,在传递给Task.Run()的lambda中调用同步阻塞方法。

您可以使用await来等待结果异步操作(Task实例)。