Heim >Backend-Entwicklung >C++ >Können asynchrone Vorgänge mit ForEach verwendet werden und was ist die beste Alternative?
Frage:
Ist es möglich, Async-Funktionalität im Kontext von ForEach einzusetzen? Unten finden Sie einen Codeausschnitt, der die versuchte Implementierung darstellt:
using (DataContext db = new DataLayer.DataContext()) { db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); }); }
Bei der Ausführung tritt jedoch der folgende Fehler auf:
The name 'Async' does not exist in the current context
Beachten Sie, dass die Methode, die die using-Anweisung kapselt, angegeben wurde als asynchron.
Antwort:
Die Implementierung von ForEach, beschäftigt bei List
Für dieses spezielle Szenario wird empfohlen, einen alternativen Ansatz zu verfolgen. Dabei wird jedes Element in eine asynchrone Operation projiziert. Anschließend kann der Abschluss dieser Vorgänge asynchron abgewartet werden.
using (DataContext db = new DataLayer.DataContext()) { var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid)); var results = await Task.WhenAll(tasks); }
Dieser Ansatz bietet mehrere Vorteile gegenüber der Verwendung eines asynchronen Delegaten mit ForEach:
Das obige ist der detaillierte Inhalt vonKönnen asynchrone Vorgänge mit ForEach verwendet werden und was ist die beste Alternative?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!