2010-02-14 29 views

cevap

6

Uyku yerine, bir EventWaitHandle oluşturmak ve bir zaman aşımıyla WaitOne kullanmak isteyeceksiniz.

İş parçacığının erken uyandırılmasını istediğinizde, olayı yalnızca sinyal verecek şekilde ayarlayabilirsiniz.

İlk oluşturmak EventWaitHandle: sizin dizisindeki Sonra

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset); 

:

ana program erken iplik uyanmak istiyor
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0)); 

:

wakeUpEvent.Set(); 

Not: Olayı otomatik sıfırlama veya manuel sıfırlamaya ayarlayabilirsiniz. Otomatik sıfırlama, WaitOne olaydan döndükten sonra, tekrar sinyalsiz durumuna geri getirileceği anlamına gelir. Bu, bir döngü içinde iseniz ve birden çok kez sinyal verirseniz kullanışlıdır.

+0

İş parçacığının otomatik olarak durmasını ve el ile yazılmasını istiyorsanız: wakeUpEvent = new EventWaitHandle (false, EventResetMode.ManualReset | EventResetMode.AutoReset); şimdi zamanlayıcı bitecekse iş parçacığı çalışmaya dönecek ve bunu da manuel olarak durdurabilirsiniz. – aharon

1

Bir iş parçacığı bir WaitObject üzerinde bekleyerek ve diğer iş parçacığı üzerinde Set yöntemini çağırarak başlatılabilir. WaitHandle.WaitOne method'a bakın. Bu konuda da yardımcı olabilecek bir makalede,

Here's.

İlgili konular