C# tüm konuları tamamlamak için Bekliyor | Netgez.com
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

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • BeginnersTech

    BeginnersTec

    8 NÄ°SAN 2011
  • Facebook Developers

    Facebook Dev

    24 ÅžUBAT 2009