从同步任务中调用方法的异步版本还是同步版本更好



如果我在同步任务中运行代码,最好调用异步版本的方法并等待结果,还是只调用同步版本的代码?

也就是说,如果我使用myMethod1或myMethod2创建新任务,我会使用更少的资源吗?

public void SomeFunc() {
  // Wrapper code
  Task myTask = new Task(myMethod1);
  myTask.Run();
  // Do stuff
  myTask.Wait();
}
private void myMethod1() {
  CloudQueueMessage message = myCloudQueue.GetMessage();
  // do stuff
}
private void myMethod2() {
  CloudQueueMessage message = myCloudQueue.GetMessageAsync().Result;
  // do stuff
}

我想知道在异步操作运行时,使用异步版本是否会以某种方式使线程池中的线程再次可用。

我想知道在异步操作运行时,使用异步版本是否会以某种方式使线程池中的线程再次可用。

只有在异步执行时,这才有效。由于您正在对任务调用.Result,因此在等待时会阻塞线程。因此,在该代码中使用异步版本没有任何好处。

如果这是整个目标,那么写下会更好

public async Task SomeFunc() {
  // Wrapper code
  Task myTask = MyMethod1;
  // Do stuff
  await myTask;
}
private async Task myMethod1() {
   CloudQueueMessage message = await myCloudQueue.GetMessageAsync();
   // do stuff
}

这使所有内容保持异步,包括您的Task

最新更新