C# WinForm 执行 timer 示例
//定时从寄存器中获取数据
private System.Timers.Timer myTimer;
//启动EcsTimer
private void startMyTimer()
{
myTimer= new System.Timers.Timer();
myTimer.Interval = 1000;
myTimer.Enabled = true;
myTimer.AutoReset = true;
myTimer.Start();
myTimer.Elapsed += (o, a) =>
{
myTimer.Enabled = false;
Application.DoEvents();
DoMyAction();
myTimer.Enabled = true;
};
}
private delegate void DoMyActionDelegate();
private void DoMyAction()
{
if (this.InvokeRequired)
{
try
{
this.Invoke(new DoMyActionDelegate(DoMyAction));
}
catch (Exception e)
{
//界面关闭后Timer可能会继续走一两个点,此时使用Inovke会抛出异常,因为界面线程已经不存在了。
//忽略即可。
Console.WriteLine(e);
}
}
else
{
//这里可以操作WinForm的控件
domyaction();
}
}