Attualmente sto cercando di creare la mia applicazione utilizzando alcuni metodi asincroni. Tutto il mio IO viene eseguito tramite implementazioni esplicite di un'interfaccia e sono un po 'confuso su come rendere le operazioni asincrone.
Come vedo le cose ho due opzioni nell'implementazione:
interface IIO
{
void DoOperation();
}
OPZIONE1: eseguire un'implementazione implicita asincrona e attendere il risultato nell'implementazione implicita.
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
}
OPZIONE2: esegui l'implementazione esplicita in modo asincrono e attendi l'attività dall'implementazione implicita.
class IOAsyncImplementation : IIO
{
private Task DoOperationAsync()
{
return new Task(() =>
{
//DO ALL THE HEAVY LIFTING!!!
});
}
#region IIOAsync Members
async void IIO.DoOperation()
{
await DoOperationAsync();
}
#endregion
}
Una di queste implementazioni è migliore dell'altra o c'è un'altra strada da percorrere a cui non sto pensando?