Her iş parçacığında bir olay (ör. ManualResetEvent
) oluşturabilir ve senkronize bir listede saklayabilirsiniz (lock
yapısını kullanarak). Etkinliği ayarlayın veya görev bittiğinde listeden kaldırın.
Katılmak istediğinizde, tüm olayların bildirilmesini beklemek için WaitHandle.WaitAll
(MSDN documentation) kullanabilirsiniz.
Bu bir kesmek ama daha basit bir şeye nasıl indirgemiyorum!
Düzenleme: Ayrıca, yeni olayların gönderilmemesini sağlayabilir, ardından birkaç saniye bekleyebilirsiniz. Eğer gerçekten kısa ömürlülerse, sorun olmaz. Daha basit, ama daha hacky.
Son olarak, eğer çok kısa bir süre varsa, tüm iş parçacıkları ölünceye kadar hizmetten çıkmaz (arka plan iş parçacıkları olmadıkça); Bu yüzden eğer kısa bir süre varsa, servis kontrol müdürü bir ya da daha fazla aklına takılmayacaktır - deneyimlerime göre onları sona erdirebilirsiniz.
Kısa ömürlü olmalılar, fakat kullanım durumum için "çalışmalı" dan daha fazla güvenceye ihtiyacım var. Havuzdaki iş parçacığı sayısını izlemek ve bu sıfıra eşit olarak beklemek için kilitli bir iş parçacığı sayacı kullanmayı düşünüyorum. – recursive
Aslında, ilk önerinizi tezgahtan daha iyi seviyorum. – recursive