Ich gründe eine Task[]
Array, damit ich Task.WhenAll()
wie diese verwenden:Wie kann ich Aufgabe <IEnumerable> auspacken, um mit den Ergebnissen zu arbeiten?
Task.WhenAll
Task[] tasks = new Task[2];
tasks[0] = _widgetDataService.RetrieveAsync<CollaboratorNetworkNode>(
"get_collaborator_nodes", portfolio,
recentFys, nodesSwitch);
tasks[1] = _widgetDataService.RetrieveAsync<CollaboratorNetworkEdge>(
"get_collaborator_edges", portfolio, recentFys);
await Task.WhenAll();
Der Code läuft gut und wird zu einem Schnittpunkt.
Aber jetzt gehe ich diesen Code auszuführen:
var nodes = from pi in (IEnumerable<CollaboratorNetworkNode>)tasks[0]
select new GraphNode { Id = pi.ProfileId, Properties = pi, Labels = new[] { "Person" } };
und ich erhalte die Fehlermeldung:
Kann Objekt vom Typ werfen ‚System.Threading.Tasks.Task'1 [System.Collections.Generic.IEnumerable'1 [Nete.Ireport.Models.ViewModels.CollaboratorNetworkNode]] ' Geben Sie ' System.Collections.Generic.IEnumerable'1 [Nete.Ireport.Models.ViewModels.CollaboratorNetworkNode] 'ein.
Wenn ich versuche, gerade dies auszuführen:
var nodes = from pi in tasks[0]
select new GraphNode { Id = pi.ProfileId, Properties = pi, Labels = new[] { "Person" } };
Ich kann nicht kompilieren, weil ich die roten bekommen verschnörkelt mit:
Aufgabe enthält keine Definition für Select und die beste Erweiterung Methode Überladung "DynamicQueryable.Select (IQueryable, Zeichenfolge, Parameter Objekt [] erfordert einen Empfänger des Typs IQueryable.
Wir versuchen nur, diese beiden Retrieve-Dienste auszuführen, die jeweils 10 Sekunden dauern. Also unser Anruf ist 20 Sekunden. Ich komme jetzt in 13 bis 15 Sekunden zum Haltepunkt. Also wenn ich das zur Arbeit bringen kann, habe ich 5 bis 7 Sekunden abgeschabt.
Aber ich weiß nicht, wie man die Ergebnisse verwendet.
Wie kann ich diese Methode beenden?
Sie müssen Task.Result verwenden. Wenn Sie Ihre Aufgabe als einfache 'Aufgabe' behandeln (im Gegensatz zu einer' Aufgabe '), dann müssen Sie sie zuerst umwandeln, um Zugang zu' .Result.' –
'warten Task.WhenAll() ; "das wird nichts machen .... –
Glorin - Kannst du ein bisschen mehr Details geben als das? – Sam