private void EventTimerWorkerThread() { // wait for timer data to be loaded before proceeding (or if we are cancelled) EventWaitHandle.WaitAny(new ManualResetEvent[] { m_TimerDataLoaded, m_Canceled }); Timer ticker = new Timer(); ticker.Interval = 1000; ticker.Elapsed += (s, e) => { try { Dispatcher.Invoke(() => { foreach (EventTimerBox b in m_EventTimerBoxes.Values) { b.Tick(); } }, DispatcherPriority.Background, CancellationToken.None, new TimeSpan(0, 0, 1)); } catch { } }; ticker.Start(); while (m_Running) { try { EventTimerResponse timerData = new EventTimerRequest().Execute(); if (timerData != null) { Dispatcher.Invoke(() => { EventTimerItems_Boss.Children.Clear(); EventTimerItems_PreEvent.Children.Clear(); EventTimerItems_Other.Children.Clear(); foreach (MetaEventStatus e in timerData.Events) { EventTimerBox box = m_EventTimerBoxes[e.Id]; box.SetData(e); switch (e.StageTypeEnum) { case MetaEventStage.StageType.Boss: EventTimerItems_Boss.Children.Add(box); break; case MetaEventStage.StageType.PreEvent: EventTimerItems_PreEvent.Children.Add(box); break; default: EventTimerItems_Other.Children.Add(box); break; } } }, DispatcherPriority.Background, CancellationToken.None, new TimeSpan(0, 0, 25)); } } catch { } m_Canceled.WaitOne(30000); } ticker.Stop(); }
private void EventTimerWorkerThread() { // wait for timer data to be loaded before proceeding (or if we are cancelled) EventWaitHandle.WaitAny(new ManualResetEvent[] { m_TimerDataLoaded, m_Canceled }); Timer ticker = new Timer(); ticker.Interval = 1000; ticker.Elapsed += (s, e) => { try { Dispatcher.Invoke(() => { foreach (EventTimerBox b in m_EventTimerBoxes.Values) b.Tick(); }, DispatcherPriority.Background, CancellationToken.None, new TimeSpan(0, 0, 1)); } catch { } }; ticker.Start(); while (m_Running) { try { EventTimerResponse timerData = new EventTimerRequest().Execute(); if (timerData != null) { Dispatcher.Invoke(() => { EventTimerItems_Boss.Children.Clear(); EventTimerItems_PreEvent.Children.Clear(); EventTimerItems_Other.Children.Clear(); foreach (MetaEventStatus e in timerData.Events) { EventTimerBox box = m_EventTimerBoxes[e.Id]; box.SetData(e); switch (e.StageTypeEnum) { case MetaEventStage.StageType.Boss: EventTimerItems_Boss.Children.Add(box); break; case MetaEventStage.StageType.PreEvent: EventTimerItems_PreEvent.Children.Add(box); break; default: EventTimerItems_Other.Children.Add(box); break; } } }, DispatcherPriority.Background, CancellationToken.None, new TimeSpan(0, 0, 25)); } } catch { } m_Canceled.WaitOne(30000); } ticker.Stop(); }