先说明一下WPF界面是没有timer控件的
第一种:DispatcherTimer定时器,可以说是专门为WPF界面设计的定时器。因为这个定时器是和UI都在同一线程上的。
第二种: System.Timers.Timer定时器,这种定时器是和UI非同一个线程。
C#有两种定时器,如果是写WPF上位机的话,自然是要用和UI同一个线程的定时器,不然要考虑跨线程的问题。
参考:
WPF常见的两种定时器
代码如下:
public partial class MainWindow : Window
{
private DispatcherTimer mDataTimer = null; //定时器
private long timerExeCount = 0; //定时器执行次数
public MainWindow()
{
InitializeComponent();
InitTimer();
StartTimer();
}
private void InitTimer()
{
if (mDataTimer == null)
{
mDataTimer = new DispatcherTimer();
mDataTimer.Tick += new EventHandler(DataTimer_Tick);
mDataTimer.Interval = TimeSpan.FromSeconds(0.5);
}
}
private void DataTimer_Tick(object sender, EventArgs e)
{
s2 = DateTime.Now;
s1 = DateTime.Now;
++timerExeCount;
DisplayTextBox.Text = "USB Connect... " + timerExeCount;
}
DateTime s1;
DateTime s2;
public void StartTimer()
{
if (mDataTimer != null && mDataTimer.IsEnabled == false)
{
mDataTimer.Start();
s1 = DateTime.Now;
}
}
public void StopTimer()
{
if (mDataTimer != null && mDataTimer.IsEnabled == true)
{
mDataTimer.Stop();
}
}
}
版权声明:本文为zhuohui307317684原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。