Menggunakan Async dengan ForEach dalam C#
Apabila menggunakan kaedah ForEach dengan operasi tak segerak, adalah penting untuk memahami batasannya. Dalam kod anda:
db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); });
Ralat pengkompil yang anda hadapi, "Nama 'Async' tidak wujud dalam konteks semasa," menunjukkan bahawa anda tidak boleh menggunakan async terus dalam ungkapan lambda bukan tak segerak.
Penyelesaian:
Untuk mengatasi masalah ini, unjurkan setiap elemen ke dalam tak segerak operasi dan tunggu semuanya selesai:
using (DataContext db = new DataLayer.DataContext()) { var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid)); var results = await Task.WhenAll(tasks); }
Faedah Pendekatan ini:
Atas ialah kandungan terperinci Bagaimana cara menggunakan Async dengan ForEach dengan betul dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!