Ich versuche derzeit, meine Anwendung mit einigen Async-Methoden zu erstellen. Alle meine E / A-Vorgänge werden durch explizite Implementierungen einer Schnittstelle ausgeführt, und ich bin etwas verwirrt darüber, wie die Vorgänge asynchronisiert werden sollen.
Aus meiner Sicht habe ich zwei Möglichkeiten bei der Implementierung:
interface IIO
{
void DoOperation();
}
OPTION1: Führen Sie eine implizite Implementierung asynchron durch und warten Sie auf das Ergebnis in der impliziten Implementierung.
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: Führen Sie die explizite Implementierung asynchron durch und warten Sie auf die Aufgabe der impliziten Implementierung.
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
Ist eine dieser Implementierungen besser als die andere oder gibt es einen anderen Weg, an den ich nicht denke?