.NET 4.6
带有“异步”的带有await的调用方法与没有“异步”的相同方法之间有什么区别?
protected Task<MyObject<T>> MyMethod1<T>(string parameter)
{
return CallDb();
}
protected async Task<MyObject<T>> MyMethod2<T>(string parameter)
{
return await CallDb();
}
// Calling these
public async Task<IEnumerable<string>>(string parameter)
{
return await MyMethod1<string>(parameter);
// Any difference?
return await MyMethod2<string>(parameter);
}
public Task<string> CallDb()
{
}
Run Code Online (Sandbox Code Playgroud)
如果你在谈论的区别MyMethod1和MyMethod2,然后在这个确切的情况,唯一的区别是,MyMethod2有稍微开销和一些非常细微的异常将如何提出不同(在谁的方面被指责)。特别是,MyMethod2最终将分配额外的任务,并且将具有一些额外的异步状态机样板,如果结果不完整,则可能最终被装箱并进入堆CallDb。
在一般情况下,如果你不是做需要做任何额外的(预/值,后处理using,finally等等),我会建议MyMethod1-即不引入的async没有理由的机械。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |