4 Kasım 2008, Salı
C# tüm konuları tamamlamak için Bekliyor
Tamamlamak için bir grup tüm iş parçacıkları için beklemem gereken bir zaman aşımı ile yazdığım kodda ortak bir kalıp içine çalışan, ben. Zaman aşımı süresi için gerekli olması gerekiyordutümkonuları tamamlamak için, sadece iplik yapıyor.(Timeout) için her iş parçacığı katılın Olası zaman aşımı * numThreads zaman aşımı o zamandan beri işe yaramaz.
Şimdi aşağıdaki gibi bir şey istiyorum:
var threadFinishEvents = new List<EventWaitHandle>();
foreach (DataObject data in dataList)
{
// Create local variables for the thread delegate
var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset);
threadFinishEvents.Add(threadFinish);
var localData = (DataObject) data.Clone();
var thread = new Thread(
delegate()
{
DoThreadStuff(localData);
threadFinish.Set();
}
);
thread.Start();
}
Mutex.WaitAll(threadFinishEvents.ToArray(), timeout);
Ancak, bu tür bir şey için daha basit bir deyim olmalı gibi görünüyor.
CEVAP
4 Kasım 2008, Salı
Ben hala Birleştirme kullanarak daha basit olduğunu düşünüyorum. Beklenen tamamlanma süresi (Artık zaman aşımı) kaydı, bir döngü yapın
if(!thread.Join(End-now))
throw new NotFinishedInTime();
Bunu Paylaş:
Nasıl bütün konuları tamamlamak, Execu...
Kullanarak zaman uyumsuz/çoklu görevle...
&Quot Geçersiz kılmak İçin Nasıl Andro...
zaman uyumsuz/Görev vs bir boşluk dönm...
Tamamlamak için HttpServletRequest URL...