Ho più attività che restituiscono lo stesso tipo di oggetto che desidero chiamare utilizzando Task.WhenAll(new[]{t1,t2,t3});
e leggere i risultati.Ottenere risultato da Task.WhenAll
Quando provo utilizza
Task<List<string>> all = await Task.WhenAll(new Task[] { t, t2 }).ConfigureAwait(false);
ottengo un errore di compilazione
Impossibile convertire implicitamente il tipo 'vuoto' di
'System.Threading.Tasks.Task<System.Collections.Generic.List<string>>
entrambi i compiti vengono metodo simile chiamando il presente .
private Task<List<string>> GetFiles(string path)
{
files = new List<string>();
return Task.Run(() =>
{
//remove for brevity
return files;
});
}
Potete per favore chiarire quale parte del campione di MSDN per [WhenAll] (https://msdn.microsoft.com/en-us/library/hh194766%28v=vs.110%29.aspx) non è chiaro? Sarebbe più facile rispondere alla domanda. –
In realtà nessuno dell'articolo è chiaro. Ciò che non è chiaro è da dove viene questo vuoto. – user3373870
Vedo - come ha sottolineato Mike Hixson, l'elenco di 'Task' (attività che non restituisce valore) invece di' Task '- quindi attendiamo risultati in' void'. Normalmente non si specifica il tipo usando la sintassi dell'array di scelta rapida per evitare tali problemi - 'ask.WhenAll (new [] {t, t2}) ...'. oppure utilizzare una lista/serie di compiti tipicamente corretti come mostrato nell'esempio MSDN - 'var tasks = new List >();'. –