有人可以让我知道我们何时在以下两个实现中将一个与另一个结合使用:
await Task.Run(async () => Method());
await Task.Run(() => Method());
在async
调用中使用Task.Run()
的目的是什么?
答案 0 :(得分:2)
没有真正的理由使用#1。使用Task.Run
的目的是使一个长时间运行的任务或I / O密集型工作单元变得异步,并且由于#1已经是异步的,因此Task.Run
内部的异步匿名函数是多余和不必要的。
您可以执行以下操作将工作单元转换为异步:
await Task.Run(() => Method());
public void Method()
{
//doing intensive work here
}
或者您只是await
已经异步的工作单元。
await MethodAsync();
public async Task MethodAsync()
{
//doing async work here
}
答案 1 :(得分:-4)
如果您调用的方法是异步的,则可以在函数中使用async / await。
async Task MainAsync()
{
await Task.Run(async () => await MethodAsync());
await Task.Run(() => Method());
}
async Task MethodAsync() { ... }
void Method() { ... }