C# Asynchronous foreach için bir yol var mı? id (ler) yerine Parallel.ForEachEşzamansız foreach
//This Gets all the ID(s)-IEnumerable <int>
var clientIds = new Clients().GetAllClientIds();
Parallel.ForEach(clientIds, ProcessId); //runs the method in parallel
static void ProcessId(int id)
{
// just process the id
}
bir foreach şey olmalı kullanmak yerine, yöntemi ile uyumsuz olarak işlenmesi ama yönetmeye çalışıyorum
foreach(var id in clientIds)
{
ProcessId(id) //runs the method with each Id asynchronously??
}
uyumsuz olarak çalışır edilecektir Program, Konsoldaki tüm kimlik (ler) i, Konsolu kapatmadan önce tamamlanmasını beklemelidir.
gibi bitmiş olacaktır Görev dönmek zorunda kalacaktı. Çok iş parçacıklı foreach istediğini düşünüyorum ama 'Parallel.ForEach' (çok iş parçacıklı) kullanmak istemezsiniz? – Igor
Peki, 2. Örnekte 'ProcessId' fonksiyonunuz asenkrobunoz mu? Bir Görev döndürüyor mu? Eğer asyncronously bunu yazmak veya –
@Igor 'Parallel.ForEach' asenkron değil (Parallel.ForEach' yaptığı' gibi) Başka bir iş parçacığı üzerinde çalıştırmak zorunda Sadece "asenkron bir işlev yapmak" olamaz, zaman uyumlu paralel olarak görevleri işler . Ayrıca, uyumsuzluğu/beklemeyi desteklemez, bu yüzden ikisini karıştırmaya dikkat edin. –