Do Work 方法中的异步性:Task.Run 与异步关键字
在异步编程领域,异步执行和异步执行之间的区别可等待性可能是微妙的。让我们深入研究 Task.Run 和 async 关键字的细节,并了解它们在创建同步或异步执行的方法中的作用。
异步执行:Task.Run
Task.Run 方法允许您将代码的执行委托给后台线程。通过创建封装代码的 Task 对象,Task.Run 使您能够异步执行代码,而不会阻塞当前的执行路径。但是,使用 Task.Run 并不一定会使方法可等待。
可等待性:异步关键字
异步方法是可以在等待时暂停和恢复的方法表达式。这允许方法将执行点返回给调用线程而不会阻塞。声明为异步的方法可以返回任务或任务
示例:不使用 Async/Await 执行
// Not async because it does not use await private Task<int> DoWorkAsync() { return Task.Run(() => { return 1 + 2; }); }
在此示例中,我们返回一个 Task
示例:使用 Await 进行异步执行
private async Task<int> GetWebPageHtmlSizeAsync() { var client = new HttpClient(); var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
在此示例中,该方法被声明为异步并使用await 来暂停HttpClient.GetAsync 操作的执行。该方法将在下载网页时返回给调用者,然后在结果可用时恢复。
最佳实践:
结论:
Task.Run 通过将代码委托给后台线程来促进异步执行。 async 关键字支持可等待性,并允许方法暂停和恢复执行,从而提供创建响应迅速且高效的代码的灵活性。
以上是Task.Run 与 Async 关键字:何时使用每个关键字进行异步操作?的详细内容。更多信息请关注PHP中文网其他相关文章!