Soalan:
Adakah ia boleh menggunakan fungsi async dalam konteks ForEach? Coretan kod yang menggambarkan percubaan pelaksanaan disediakan di bawah:
using (DataContext db = new DataLayer.DataContext()) { db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); }); }
Walau bagaimanapun, selepas pelaksanaan, ralat berikut timbul:
The name 'Async' does not exist in the current context
Perhatikan bahawa kaedah yang merangkum pernyataan penggunaan telah ditetapkan sebagai async.
Jawapan:
Pelaksanaan ForEach yang digunakan oleh List
Untuk senario khusus ini, adalah dinasihatkan untuk meneruskan pendekatan alternatif. Ini melibatkan penayangan setiap elemen ke dalam operasi tak segerak. Selepas itu, penyiapan operasi ini boleh ditunggu secara tak segerak.
using (DataContext db = new DataLayer.DataContext()) { var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid)); var results = await Task.WhenAll(tasks); }
Pendekatan ini menawarkan beberapa kelebihan berbanding menggunakan perwakilan async dengan ForEach:
Atas ialah kandungan terperinci Bolehkah Operasi Async Digunakan dengan ForEach, dan Apakah Alternatif Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!