private void EventDispatchWorker() { while (true) { BackstageEventBase ev; lock (_syncLock) { if (_isDisposed) { return; } if (_waitingEvents.Count == 0) { Monitor.Wait(_syncLock); } if (_isDisposed) { return; } ev = _waitingEvents.Dequeue(); } CurrentEvent = new BackstageEventViewModel(ev); var tev = ev as TwitterEventBase; if (tev == null || !tev.IsLocalUserInvolved) { return; } ShowCurrentEvent = true; Thread.Sleep(Math.Max(Setting.EventDisplayMinimumMSec.Value, 100)); lock (_syncLock) { if (_waitingEvents.Count == 0) { Monitor.Wait(_syncLock, Setting.EventDisplayMaximumMSec.Value - Setting.EventDisplayMinimumMSec.Value); } ShowCurrentEvent = false; Thread.Sleep(100); } } }
private void EventDispatchWorker() { while (true) { BackstageEventBase ev; lock (_syncLock) { if (_isDisposed) return; if (_waitingEvents.Count == 0) Monitor.Wait(_syncLock); if (_isDisposed) return; ev = _waitingEvents.Dequeue(); } CurrentEvent = new BackstageEventViewModel(ev); ShowCurrentEvent = true; Thread.Sleep(Math.Max(Setting.EventDisplayMinimumMSec.Value, 100)); lock (_syncLock) { if (_waitingEvents.Count == 0) Monitor.Wait(_syncLock, Setting.EventDisplayMaximumMSec.Value - Setting.EventDisplayMinimumMSec.Value); ShowCurrentEvent = false; Thread.Sleep(100); } } }