【发布时间】:2014-11-18 20:14:33
【问题描述】:
我开始想知道我是否应该始终使用以下模式进行异步编程:
public async Task<int> MyMethodAsync()
{
return await SomeOtherMethodAsync();
}
或者是否安全且不会产生任何缺点,将此代码简化为:
public Task<int> MyMethodAsync()
{
return SomeOtherMethodAsync();
}
我已经开始通过互联网阅读,但找不到任何答案,所有异步编程都只提到了第一种模式。
更新 1
根据一些答案,在琐碎的方法中,第二个是正确的。但是如果我以以下方式扩展和编写方法 - 这仍然与上面的代码有关,只是为了显示 SomeOtherMethodAsync 方法内部的内容:
public async Task<int> SomeOtherMethodAsync()
{
var result1 = await LongRunningThirdMethod();
var result2 = await LongRunningForthMethod();
return result1 + result2;
}
并将我的第二个示例修改为:
public Task<int> MyMethodAsync()
{
SomeSyncMethod();
SomeOtherSyncCode();
return SomeOtherMethodAsync();
}
【问题讨论】:
-
顺便说一句,
SomeOtherMethodAsync在启动LongRunningFourthMethod之前不必要地等待LongRunningThirdMethod- 实例化两个任务并然后等待它们,以便它们可以同时运行。 -
谢谢,这只是一个简单的例子,里面是什么,以扩展主要问题。
标签: c# asynchronous async-await .net-4.5