Potrebbe essere una domanda banale, ma potrebbe aiutarmi nella comprensione di base.Task.Factory.StartNew vs metodi Async
C'è qualche differenza importante tra due seguenti implementazioni?
Task.Factory.StartNew
:public Task<string> ReadAllTextAsync(string path) { return Task.Factory.StartNew(() => File.ReadAllText(path)); }
metodo asincrono su
StreamReader
:public async Task<string> ReadAllTextAsync(string path) { using (var stream = File.OpenRead(path)) using (var reader = new StreamReader(stream)) { return await reader.ReadToEndAsync(); } }
@dtb, non possiamo davvero parlare di un ThreadPool quando si ha a che fare con Task. Il primo esempio sta bloccando il thread in cui viene eseguita l'attività, mentre nel secondo esempio non lo fa. Ho aggiornato la mia risposta per includere queste informazioni. –
+1. Buona risposta – dtb
Grazie, che lo chiarisce (in particolare il secondo punto, ho avuto il sospetto che ci sia qualche inefficienza nell'IO). –