Ich habe mehrere Aufgaben, die den gleichen Objekttyp, den ich aufrufen möchte, unter Verwendung Task.WhenAll(new[]{t1,t2,t3});
zurückgeben und die Ergebnisse lesen. Ergebnis von Task.WhenAll erhalten
Wenn ich versuche, mit
Task<List<string>> all = await Task.WhenAll(new Task[] { t, t2 }).ConfigureAwait(false);
ich einen Compiler-Fehler
nicht implizit Typ konvertieren kann 'ungültig' zu
'System.Threading.Tasks.Task<System.Collections.Generic.List<string>>
beide Aufgaben fordern ähnliches Verfahren wie die diese .
private Task<List<string>> GetFiles(string path)
{
files = new List<string>();
return Task.Run(() =>
{
//remove for brevity
return files;
});
}
Können Sie bitte klären, was Teil von MSDN Probe für [WhenAll] (https://msdn.microsoft.com/en-us/library/hh194766%28v=vs.110%29.aspx) nicht klar? Würde die Frage leichter beantworten lassen. –
Eigentlich ist keiner der Artikel nicht klar. Was nicht klar ist, ist, woher diese Leere kommt. – user3373870
Ich sehe - wie Mike Hixson wies darauf hin, Sie haben eine Liste von 'Task' (Aufgabe, die keinen Wert zurückgibt) anstelle von' Task '- daher erwarten Ergebnisse in' void'. Normalerweise geben Sie den Typ nicht einfach mit der Shortcut-Array-Syntax an, um solche Probleme zu vermeiden - 'ask.WhenAll (new [] {t, t2}) ...'. oder verwenden Sie eine ordnungsgemäß getippte Liste/ein Array von Aufgaben, wie im MSDN-Beispiel gezeigt: 'var tasks = new List >();'. –