日期:2014-05-17  浏览次数:20759 次

关于在线程里使用Invoke访问UI控件关闭软件时的问题
在一个线程里通常需要访问UI控件,但在关闭程序的时候,通常会报出“无法访问已释放的对象”。
加了以下都没有用。

 if (this != null && !this.IsDisposed && this.IsHandleCreated)
 {
        this.Invoke(new EventHandler(delegate      //MJ:用BeginInvoke反而会引起阻塞,关闭程序的时候"无法访问已释放的对象"
         {
               if (!txtMagneticField.IsDisposed) ...
         }
 }

这种需求是比较常见的。出现这个问题的原因无非是可能线程还没结束掉,但是控件已经释放掉了,有什么好的方法解决?

------解决方案--------------------
txtMagneticField有可能被释放之后才执行dispose