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

比如我在当前线程中要实时更新界面显示时间为当前时间

//声明定时器
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);
}
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值