如何更好地爲同步方法創建異步包裝器?創建異步包裝器的方法
// 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();
}
對於返回值(任務<Ť>)方法中,我使用的第一個版本。
但我想知道您的意見。
這些版本之間有一個普遍的區別嗎?
備案:http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx – ken2k 2014-11-03 15:41:25
順便說一句,這個:'task.ConfigureAwait(false);'不做*什麼*。 'ConfigureAwait()'*返回一個awaiter,如果你忽略返回值,它不會有任何效果。 – svick 2014-11-06 14:52:17