将DispatcherTimer与Windows服务一起使用

为什么我的DispatcherTimer不能与Windows服务一起使用。

我想要使​​用DispatcherTimer检查Windows服务许可证背后的目的

public OIMService() { InitializeComponent(); _dispatcherTimer = new DispatcherTimer(); if (!System.Diagnostics.EventLog.SourceExists("OIM_Log")) { EventLog.CreateEventSource("OIM_Log", "OIMLog"); } EventLog.Source = "OIM_Log"; EventLog.Log = "OIMLog"; _helpers = new ValidationHelpers(); StartTimer(); } protected override void OnStart(string[] args) { System.Diagnostics.Debugger.Launch(); if (_helpers.IsValid()) { ConfigureServer(); StartTimer(); } else { this.Stop(); } } private void StartTimer() { const int time = 10; _dispatcherTimer.Tick += new EventHandler(DispatcherTimerTick); _dispatcherTimer.Interval = new TimeSpan(0, 0, Convert.ToInt32(time)); _dispatcherTimer.IsEnabled = true; _dispatcherTimer.Start(); } private void DispatcherTimerTick(object sender, EventArgs e) { EventLog.WriteEntry("test test test ..."); } 

DispatcherTimer的要点是在调度程序线程上触发它的Tick事件。 这很重要,因为您只能在调度程序线程上操作Silverlight / WPF UI元素。 在Windows服务中,没有调度程序线程……没有可操作的UI。 为什么要使用DispatcherTimer而不是(比如) System.Timers.Timer