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

  • Adam Washington

    Adam Washing

    12 Mayıs 2006
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • majesticdubstep

    majesticdubs

    3 Kasım 2011