Saat ini saya mencoba membuat aplikasi saya menggunakan beberapa metode Async. Semua IO saya dilakukan melalui implementasi eksplisit antarmuka dan saya agak bingung tentang cara membuat operasi asinkron.
Seperti yang saya lihat, saya memiliki dua opsi dalam penerapan:
interface IIO
{
void DoOperation();
}
OPSI 1: Lakukan implementasi implisit async dan tunggu hasilnya dalam implementasi implisit.
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
}
OPSI2: Lakukan asinkron implementasi eksplisit dan tunggu tugas dari implementasi implisit.
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
Apakah salah satu dari penerapan ini lebih baik daripada yang lain atau adakah cara lain yang tidak saya pikirkan?