J'essaie actuellement de créer mon application en utilisant certaines méthodes Async. Toutes mes E / S sont effectuées via des implémentations explicites d'une interface et je suis un peu confus sur la façon de rendre les opérations asynchrones.
Comme je vois les choses, j'ai deux options dans la mise en œuvre:
interface IIO
{
void DoOperation();
}
OPTION1: Effectuez une implémentation implicite asynchrone et attendez le résultat dans l'implémentation implicite.
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: Effectuez une implémentation explicite asynchrone et attendez la tâche de l'implémentation implicite.
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
L'une de ces implémentations est-elle meilleure que l'autre ou y a-t-il une autre façon de procéder à laquelle je ne pense pas?