SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • Matt Steffanina

    Matt Steffan

    1 EYLÜL 2011
  • metal571

    metal571

    30 Mayıs 2006