현재 일부 비동기 메서드를 사용하여 응용 프로그램을 만들려고합니다. 내 모든 IO는 인터페이스의 명시 적 구현을 통해 수행되며 작업을 비 동기화하는 방법에 대해 약간 혼란 스럽습니다.
내가 보는 것처럼 구현에는 두 가지 옵션이 있습니다.
interface IIO
{
void DoOperation();
}
OPTION1 : 암시 적 구현 비동기를 수행하고 암시 적 구현의 결과를 기다립니다.
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
}
OPTION2 : 명시 적 구현 비동기를 수행하고 암시 적 구현에서 작업을 기다립니다.
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
이러한 구현 중 하나가 다른 것보다 낫거나 내가 생각하지 않는 다른 방법이 있습니까?