我想提供一个基于任务的异步模式样式的方法.在等待该方法时,我提供这两种方法之间找不到任何区别:
// GetStats is a delegate for a void method in this example public Task GetStatsAsync() { return TaskEx.Run(GetStats); } public async Task GetStatsAsync() { return await TaskEx.Run(GetStats); } // Usage: await GetStatsAsync(); // Difference?
上面的方法似乎比较低的方法有更少的开销.当看MSDN博客时,我注意到他们似乎使用较低的方法. (例如this article)
为什么?有什么区别?他们似乎都在工作.
解决方法
那些在逻辑上是相同的,但是第二个具有更多的开销,因此不推荐.
你可能会找到我的async
intro helpful以及task based asynchronous pattern document.
有关异步开销的更多信息,我建议您使用Zen of Async by Stephen Toub.
你可能还想读“Should I Expose Asynchronous Wrappers for Synchronous Methods?”简而言之,答案是“不”.