winfrom后台怎么写定时器?
winfrom后台怎么写定时器?
例子:
private void label5_Click(object sender, EventArgs e) { string time = DateTime.Now.ToString(); this.label5.Text = time; } private void button8_Click(object sender, EventArgs e) { Timer timer = new Timer(); timer.Interval = 1000;//定时1000毫秒(一秒) timer.Elapsed += label5_Click; timer.Start();//启动定时任务 //停止定时任务 //timer.stop(); //加载时 取消跨线程检查,防止报错() Control.CheckForIllegalCrossThreadCalls = false; }
这里Control.CheckForIllegalCrossThreadCalls = false;是防止报(System.InvalidOperationException:“线程间操作无效: 从不是创建控件“label1”的线程访问它。”)的错误。
异步执行也可以
例子:
private void button10_Click(object sender, EventArgs e) { System.Timers.Timer timer = new Timer(); timer.Interval = 1000; timer.Elapsed += label6_Click; timer.Start(); } private void label6_Click(object sender, EventArgs e) { label6.BeginInvoke(new Action(() => { label6.Text = DateTime.Now.ToString("yyyy/HH/dd HH:mm:ss"); })); }
其实winfrom有自带的“timer”。
在设定执行时间间隔
timer1.Interval = 1000;
在timer1.Tick+=写完后两下tab键自动生成委托事件
之后你就可以在委托时间里写你想写的方法了。