На даний момент я намагаюся зробити свою програму за допомогою деяких методів Async. Весь мій 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
}
Чи одна з цих реалізацій краща за іншу чи є інший шлях, про який я не думаю?