如何解决'无法访问已处置的物体'?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决'无法访问已处置的物体'?相关的知识,希望对你有一定的参考价值。

因此,我正在尝试使用ConsoleControl最新版本创建一个简单命令提示符。我的代码很简单:

public CommandPrompt()
    
        InitializeComponent();
    

    private void CommandPrompt_Load(object sender, EventArgs e)
    
        consoleControl1.StartProcess("cmd", string.Empty);
    

    private void CommandPrompt_FormClosing(object sender, FormClosingEventArgs e)
    
        consoleControl1.StopProcess();
    

问题出在FormClosing事件上。每当我关闭窗口并在之后立即重新打开窗口时(有时它会在关闭时触发异常),它会产生“无法访问已处置的对象”异常。

我似乎无法解决它。问题是我所见的StopProcess()方法。因此,我决定使用Process.Kill()手动终止cmd进程,但仍然是相同的例外。出于某种原因,终止cmd进程当窗体关闭时]似乎抛出此异常。

我发现通过程序终止进程的唯一方法是使用命令taskkilltskill。但是我希望它在窗体关闭后自动终止

非常感谢您的帮助!

因此,我正在尝试使用ConsoleControl最新版本创建简单的命令提示符。我的代码非常简单:public CommandPrompt()InitializeComponent(); private void ...

答案

我正在回答自己的问题,因为找到了解决方案。我只需要使用表单的实例并将其隐藏而不是将其关闭

以上是关于如何解决'无法访问已处置的物体'?的主要内容,如果未能解决你的问题,请参考以下文章

无法访问已处置的对象。对象名称:'System.Net.Sockets.UdpClient'

System.ObjectDisposedException:'无法访问已处置的对象。对象名称:'OracleConnection'。'

引发线程事件时无法访问已处置的对象

无法在单元测试中访问已处置的对象

使用异步存储库模式 - 无法访问已处置的对象

通过 Azure 函数注入 DbContext 时无法访问已处置的对象