DotNet · 2022年4月17日

在Invoke调用时,抛出ObjectDisposedException 异常

如碰到在Invoke或BeginInvoke调用时,抛出ObjectDisposedException 异常
C#下的代码示例

vb.net下的代码示例:
问题原因
这种情况一般是UI窗体已处于关闭状态,但还能被事件或外部对像调用到,在切换到UI执行Invoke或BeginInvoke过程中就会被抛出ObjectDisposedException 异常,
问题处理
我们有二种处理办法,可以都使用上去,一种是在Invoke代码前面加入判断语句,来判断当前UI是否已在关闭关态
如:
		If (mHalt OrElse Me.IsDisposed) Then   ’mHalt为自行定义的判断变量,判断当前窗体是否已执行过关闭
            Return
        End If
		‘mHalt可以在窗体的Disposed事件中来设置为true
第二种,就是用try..catch语句来捕获异常
			try
            {
                if (this.InvokeRequired)
                {
                    pdo pdodate = new pdo(ShowPdo);
                    this.Invoke(pdodate, new object[] { data });
                }
                else
                {
                    textBox1.Text = data.ToString();
                }
            }
            catch(Exception ex)
            {
            }

最新电影,电视剧,尽在午夜剧场

电影电视剧午夜不寂寞