ฉันกำลังพยายามสร้างแอปพลิเคชันของฉันโดยใช้วิธี Async IO ทั้งหมดของฉันทำผ่านการใช้งานอินเทอร์เฟซอย่างชัดเจนและฉันสับสนเล็กน้อยเกี่ยวกับวิธีทำให้การดำเนินการไม่ตรงกัน
เมื่อฉันเห็นสิ่งต่างๆฉันมีสองทางเลือกในการใช้งาน:
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
}
OPTION2: ทำการ async การนำไปใช้งานอย่างชัดเจนและรองานจากการนำไปใช้โดยปริยาย
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
การใช้งานอย่างใดอย่างหนึ่งเหล่านี้ดีกว่าอีกวิธีหนึ่งหรือมีวิธีอื่นที่ฉันไม่ได้คิด