J'essaie actuellement de réaliser mon application en utilisant des méthodes asynchrones. Toutes mes entrées-sorties sont effectuées par des implémentations explicites d'une interface et je suis un peu perdu 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 : Faire une implémentation implicite asynchrone et attendre 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 : Effectuer l'implémentation explicite de manière asynchrone et attendre 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 mises en œuvre est-elle meilleure que l'autre ou existe-t-il une autre solution à laquelle je ne pense pas ?