我目前正在尝试使用一些异步方法来制作我的应用程序。我所有的 IO 都是通过接口的显式实现完成的,我对如何使操作异步有点困惑。
正如我所看到的,我在实施中有两个选择:
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
}
这些实现中的一个是否比另一个更好,或者还有其他我没有想到的方法吗?