从同步任务中调用方法的异步版本还是同步版本更好
本文关键字:版本 同步 更好 异步 方法 任务 调用 | 更新日期: 2023-09-27 18:26:03
如果我在同步任务中运行代码,最好调用异步版本的方法并等待结果,还是只调用同步版本的代码?
也就是说,如果我使用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
。