Eğer bir iş parçacığı A uyuyorsa, başka bir iş parçacığı iş parçacığı B, iş parçacığı A'nın nasıl başlatılacağını gösterir? Lütfen mümkünse bir örnek verin..NET'te bir iş parçacığı başlatılıyor
5
A
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 istiyorwakeUpEvent.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.
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,
İş 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