gpt4 book ai didi

c# - 无法使用多线程访问已处置的对象

转载 作者:行者123 更新时间:2023-11-30 21:00:25 24 4
gpt4 key购买 nike

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

Cannot access a disposed object

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

这是发生错误的部分代码:

/// <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");
}
}

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

提前致谢!

最佳答案

检查 IsDisposed使用前 TextBox 的属性:

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

关于c# - 无法使用多线程访问已处置的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com