Tôi hiện đang cố gắng tạo ứng dụng của mình bằng một số phương pháp Async. Tất cả IO của tôi được thực hiện thông qua việc triển khai rõ ràng một giao diện và tôi hơi bối rối về cách làm cho các hoạt động không đồng bộ.
Khi tôi thấy những điều, tôi có hai tùy chọn trong việc triển khai:
interface IIO
{
void DoOperation();
}
TÙY CHỌN1: Thực hiện không đồng bộ triển khai ngầm định và chờ đợi kết quả trong quá trình triển khai ngầm định.
class IOImplementation : IIO
{
async void DoOperation()
{
await Task.Factory.StartNew(() =>
{
//WRITING A FILE OR SOME SUCH THINGAMAGIG
});
}
#region IIO Members
void IIO.DoOperation()
{
DoOperation();
}
#endregion
}
TÙY CHỌN 2: Thực hiện không đồng bộ triển khai rõ ràng và chờ tác vụ từ triển khai ngầm định.
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
Một trong những cách triển khai này có tốt hơn cách triển khai kia không hay có cách nào khác để thực hiện mà tôi chưa nghĩ đến?