Verwenden von Async mit ForEach in C#
Bei der Verwendung der ForEach-Methode mit asynchronen Vorgängen ist es wichtig, ihre Einschränkungen zu verstehen. In Ihrem Code:
db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); });
Der Compilerfehler „Der Name ‚Async‘ existiert im aktuellen Kontext nicht“ weist darauf hin, dass Sie async nicht direkt in einem nicht asynchronen Lambda-Ausdruck verwenden können.
Lösung:
Um dies zu umgehen, projizieren Sie jedes Element in einen asynchronen Vorgang und warten Sie darauf, dass alle Elemente ausgeführt werden vollständig:
using (DataContext db = new DataLayer.DataContext()) { var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid)); var results = await Task.WhenAll(tasks); }
Vorteile dieses Ansatzes:
Das obige ist der detaillierte Inhalt vonWie verwende ich Async mit ForEach in C# richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!