您的位置:首页 > 编程语言 > C#

【C#】更新界面显示并解决this.Invoke无法访问已释放的对象

2017-06-19 14:34 405 查看
比如我在当前线程中要实时更新界面显示时间为当前时间

//声明定时器
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐