Cách tốt hơn để tạo trình bao bọc không đồng bộ cho phương thức đồng bộ?Cách tạo trình bao bọc không đồng bộ
// 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;
}
Mặc dù việc sử dụng cả hai phiên bản đều không khác nhau.
async Task Executor()
{
await LongOpertionWrapperAsyncV1();
await LongOpertionWrapperAsyncV2();
}
Đối với phương pháp mà trở về giá trị (công tác <T>), tôi sử dụng phiên bản đầu tiên.
Nhưng tôi muốn biết ý kiến của bạn.
Và có sự khác biệt chung giữa các phiên bản này?
Để lưu nội dung: http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx – ken2k
BTW, điều này: 'task.ConfigureAwait (false);' không làm * bất cứ điều gì *. 'ConfigureAwait()' * trả về * một awaiter, nếu bạn bỏ qua giá trị trả về, nó sẽ không có bất kỳ hiệu ứng nào. – svick