В настоящее время я пытаюсь создать свое приложение, используя некоторые методы Async. Все мои операции ввода-вывода выполняются с помощью явных реализаций интерфейса, и я немного не понимаю, как сделать операции асинхронными.
Насколько я понимаю, у меня есть два варианта реализации:
interface IIO
{
void DoOperation();
}
ВАРИАНТ 1. Выполните неявную реализацию async и дождитесь результата в неявной реализации.
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
}
Одна из этих реализаций лучше другой или есть другой способ, о котором я не думаю?