gpt4 book ai didi

c# - 如何编写一个 "awaitable"方法?

转载 作者:IT王子 更新时间:2023-10-29 03:44:52 28 4
gpt4 key购买 nike

我终于研究了 async 和 await 关键字,我有点“get”,但我看到的所有示例都调用了 .Net 框架中的异步方法,例如this one ,它调用 HttpClient.GetStringAsync()

我不太清楚的是在这种方法中发生了什么,以及我将如何编写自己的“可等待”方法。是不是把我想异步运行的代码包装在一个 Task 中并返回它那么简单?

最佳答案

就这么简单

Task.Run(() => ExpensiveTask());

使其成为可等待的方法:

public Task ExpensiveTaskAsync()
{
return Task.Run(() => ExpensiveTask());
}

这里重要的是返回一个任务。该方法甚至不必标记为异步。 (只要再读一点就可以理解了)

现在这可以称为

async public void DoStuff()
{
PrepareExpensiveTask();
await ExpensiveTaskAsync();
UseResultsOfExpensiveTask();
}

请注意,这里的方法签名表示 async,因为该方法可能会将控制权返回给调用者,直到 ExpensiveTaskAsync() 返回。此外,在这种情况下,昂贵意味着耗时,例如 Web 请求或类似请求。要将繁重的计算发送到另一个线程,通常最好使用“旧”方法,即用于 GUI 应用程序的 System.ComponentModel.BackgroundWorkerSystem.Threading.Thread .

关于c# - 如何编写一个 "awaitable"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21700846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com