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”行!!
之后开始答案 0 :(得分:3)
请阅读DispatcherTimer的MSDN,它明确说明它们已添加到Dispatcher Queue。
DispatcherTimer在每个Dispatcher循环的顶部重新评估。 定时器不能保证在时间间隔发生时准确执行,但保证在时间间隔发生之前不执行定时器。这是因为DispatcherTimer操作与其他操作一样放在Dispatcher队列中。 DispatcherTimer操作执行时依赖于队列中的其他作业及其优先级。
您可以尝试使用System.Timers.Timer。