C# 从同步任务调用方法的异步或同步版本更好吗?
如果我在同步任务中运行代码,那么调用异步版本的方法并等待结果还是只调用同步版本的代码更好 也就是说,如果使用myMethod1或myMethod2创建新任务,我会使用更少的资源吗C# 从同步任务调用方法的异步或同步版本更好吗?,c#,asynchronous,threadpool,C#,Asynchronous,Threadpool,如果我在同步任务中运行代码,那么调用异步版本的方法并等待结果还是只调用同步版本的代码更好 也就是说,如果使用myMethod1或myMethod2创建新任务,我会使用更少的资源吗 public void SomeFunc() { // Wrapper code Task myTask = new Task(myMethod1); myTask.Run(); // Do stuff myTask.Wait(); } private void myMethod1() { C
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
}
这使一切保持异步,包括任务