C#跨线程更新更新窗体控件

软件:VS2015

平台:win10;

坑:

通过开启一个线程去更新显示窗体的运行时间,编译运行之后程序并没有发现什么问题,但是在关闭窗体的时候就直接出异常了,在开启的新线程种提示显示的更新的窗体已经被释放了,网上查看 了不少资料,什么用标志符去做if判断的啊,用this.dispose的啊,还有说是用this.beigininvoke的异步的方式,但是好像 对我来说就像是魔咒一样,通通不行。部分源代码如下:

   while (true)
            {
                string Diffrenttime = null;
                DateTime Endtime = DateTime.UtcNow;
                TimeSpan Runtime = Endtime.Subtract(begintime).Duration();

                    This.Invoke(new Action(() =>
                    {
                        // 用对象选择需要显示的时间差,如:天,小时,分钟,秒
                        Diffrenttime = Runtime.Days.ToString() + "天" +
                              Runtime.Hours.ToString() + "小时" +
                              Runtime.Minutes.ToString() + "分钟" +
                              Runtime.Seconds.ToString() + "秒";
                        TB_Counttime.Text = Diffrenttime;
                    }));

解决方案:

通过寻找问题所在和请教大佬,发现问题就是出现用This这个导致的问题,罪魁祸首找到了那就是要解决他了,将This替换成如下的代码:

                    TB_Counttime.Invoke(new Action(() =>
                    {                                                   }

到这里问题就已经解决了,希望能够帮助一些道友。
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值