【发布时间】:2014-12-30 06:38:10
【问题描述】:
如何更好地为同步方法创建异步包装器?
// sync method
public void LongOperation()
{
//code...
}
// versions of wrapper
public async Task LongOpertionWrapperAsyncV1()
{
var task = Task.Factory.StartNew(LongOperation);
await task.ConfigureAwait(false);
}
public Task LongOpertionWrapperAsyncV2()
{
var task = Task.Factory.StartNew(LongOperation);
task.ConfigureAwait(false);
return task;
}
虽然两个版本的使用没有区别。
async Task Executor()
{
await LongOpertionWrapperAsyncV1();
await LongOpertionWrapperAsyncV2();
}
对于返回值的方法(Task
但我想知道你的意见。
这些版本之间有普遍的区别吗?
【问题讨论】:
-
顺便说一句,这个:
task.ConfigureAwait(false);不做任何事情。ConfigureAwait()返回一个awaiter,如果忽略返回值,它不会有任何效果。
标签: c# .net async-await c#-5.0