在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)
{
}