定时器WPF - 定时器的功能不能按时工作

时间:2015-07-07 13:19:04

标签: c# wpf timer

public partial class Window1 : Window
{
    private DispatcherTimer timer;   // timer  
    public Window1()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(1);
        timer.Tick += new EventHandler(timer_Tick);  
        timer.Start();
        int b;//if arrives here instead of the function timer_Tick!!!!!!!
    }

    void timer_Tick(object sender, EventArgs e)
    {
        // function
    }
}

定时器功能仅在完成当前功能后才启动。 而不是在时间开始时开始,该函数在“int b”行!!

之后开始

1 个答案:

答案 0 :(得分:3)

请阅读DispatcherTimer的MSDN,它明确说明它们已添加到Dispatcher Queue。

  

DispatcherTimer在每个Dispatcher循环的顶部重新评估。   定时器不能保证在时间间隔发生时准确执行,但保证在时间间隔发生之前不执行定时器。这是因为DispatcherTimer操作与其他操作一样放在Dispatcher队列中。 DispatcherTimer操作执行时依赖于队列中的其他作业及其优先级。

DispatcherTimer MSDN

您可以尝试使用System.Timers.Timer。

System.Timers.Timer