每次关闭应用程序时,我都会遇到一个非常烦人的错误,该错误告诉我:


  无法访问已处置的对象


只有在我关闭应用程序时才会发生这种情况。

这是发生错误的零件代码:

/// <summary>
/// Method that shows a log to the user, about what is happening behind scenes.
/// </summary>
/// <param name="logtext"></param>
public void DisplayLog(string logtext)
{
    if (this.txtLog.InvokeRequired)
    {
        Invoke(new MethodInvoker(delegate()
            {
                txtLog.AppendText(logtext + "\n\n");
            }));
    }
    else
    {
        txtLog.AppendText(logtext + "\n\n");
    }
}


错误出现在其他括号之间的txtLog.AppendText上。
它可能与我正在使用的线程有关,上面的代码不在我创建的线程中运行,只有在后台运行以检查激发事件的Windows窗体线程,正在发送的代码对该方法的logtext在另一个名为Serial的内部类中,然后它从线程运行,有人知道如何解决此问题吗?

提前致谢!

最佳答案

使用之前,请检查TextBox的IsDisposed属性:

if (!txtLog.IsDisposed) {
    txtLog.AppendText(logtext + "\n\n");
}

08-26 16:22