【C#】更新界面显示并解决this.Invoke无法访问已释放的对象
程序员文章站
2022-06-10 16:33:44
...
比如我在当前线程中要实时更新界面显示时间为当前时间
//声明定时器
private System.Timers.Timer timer1;
//设置定时器 (在Load里设置)
timer1 = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为1000毫秒;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);//到达时间的时候执行事件;
timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
timer1.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
private void timer1_Elapsed(object source, System.Timers.ElapsedEventArgs e)
{
//更新界面
this.Invoke((EventHandler)(delegate
{
try
{
TimeNow.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
catch
{
}
}));
}
关闭页面的时候请注意这种写法 避免出现无法访问已释放的对象
//FormClosing事件 先停下定时器
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
timer1.Stop();
}
//FormClosed事件 彻底关闭程序
private void Form1_FormClosed(object sender, FormClosingEventArgs e)
{
System.Environment.Exit(0);
}