【发布时间】:2020-12-20 23:51:38
【问题描述】:
我知道 Task.Run 将从线程池中获取一个线程来运行该方法,除此之外,为什么在下面的代码中它需要使用 Task.Run 扭曲返回任务的方法。
我指的是https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md
GOOD Task-returning methods are better since unhandled exceptions trigger the TaskScheduler.UnobservedTaskException.
public class MyController : Controller
{
[HttpPost("/start")]
public IActionResult Post()
{
*//this line, why wrap it in Task.Run
Task.Run(BackgroundOperationAsync);*
return Accepted();
}
public async Task BackgroundOperationAsync()
{
var result = await CallDependencyAsync();
DoSomething(result);
}
}
【问题讨论】:
-
主要区别:你在浪费一个线程并无缘无故地导致线程切换。
标签: .net async-await