私は現在、いくつかの非同期メソッドを使用してアプリケーションを作成しようとしています。私のIOはすべて、インターフェイスの明示的な実装を通じて行われ、操作を非同期にする方法について少し混乱しています。
私が物事を見ると、実装には2つのオプションがあります。
interface IIO
{
void DoOperation();
}
オプション1: 暗黙的な実装の非同期を実行し、暗黙的な実装で結果を待ちます。
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
}
オプション2: 明示的な実装を非同期にして、暗黙的な実装からのタスクを待ちます。
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
これらの実装の1つは他の実装よりも優れていますか、それとも私が考えていない別の方法がありますか?