如何为常规事件实现计时器?

时间:2012-09-05 15:24:36

标签: c# wpf events timer

我想在我的应用程序中实现一些计时器。 我的目标是提供一种简单的方法来每x秒/分钟执行一些功能,所以我想实现一个1秒,5秒和15秒的计时器。 我想每1秒更新一次的是内置时钟(不知道c#中是否还有其他解决方案,在c ++中使用此方法) 另一种用途是例如同步功能等,每隔xx秒执行一次。

我的问题是,是否有关于此主题的任何有用的教程?这是我第一次将这样的计时器系统应用到我的一个应用程序中,我不知道是否有任何事情需要记住。

提前感谢您的回答:)

2 个答案:

答案 0 :(得分:4)

您可以使用各种类型的Timer类。

在WPF中,如果这是用于更新与用户界面相关的内容,则通常使用DispatcherTimer

您也可以使用System.Timers.TimerSystem.Threading.Timer,但要意识到这将在后台线程上触发,而不是在主用户界面线程上触发。这通常是有益的(如果Timer的Tick事件或回调中发生“工作”,您不会等待或阻止您的UI,但您还必须记住将任何与用户界面相关的内容编组回UI线程。

答案 1 :(得分:1)

    // This timer runs on UI thread
    System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
    timer.Interval = System.TimeSpan.FromSeconds(1);
    timer.Tick += timer_Tick;
    timer.Start();

    void timer_Tick(object sender, System.EventArgs e)
    {
        Title = System.Windows.Input.Keyboard.FocusedElement.GetType().ToString();
    }