DLL应用程序中的C#DispatcherTimer从未触发过

时间:2014-01-10 10:04:28

标签: c# dispatchertimer

我想在DLL应用程序中使用C#Timer

DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
TimeSpan interval = TimeSpan.FromMinutes(5);
dispatcherTimer.Interval = interval;
dispatcherTimer.Start();

但问题是永远不会触发。即使时间是5分钟,也永远不会触发方法dispatcherTimer_Tick。什么都没有错误。

知道为什么吗?我正在使用.net 4.0

2 个答案:

答案 0 :(得分:2)

改为使用System.Timers.Timer

    System.Timers.Timer myTimer = new System.Timers.Timer(5 * 60 * 1000);            
    myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);            
    myTimer.Enabled = true;
    myTimer.Start();

这适用于所有应用程序类型,无论应用程序是Web,控制台,WPF等,您都不必担心它所使用的环境或应用程序。

答案 1 :(得分:1)

要使DispatcherTimer生效,您的应用必须运行消息泵。如果它是控制台应用程序或Web应用程序,则没有消息泵,因此DispatcherTimer无效。

DispatcherTimer旨在用于WPF应用程序。如果您在没有用户界面的应用程序中需要计时器,请使用System.Threading.TimerSystem.Timers.Timer