可能是一个对象被处置但不是NULL

时间:2013-06-23 11:22:35

标签: c#

在我的一个代码中,我使用了表单的公共静态对象。在这段代码中,我在这个表单上使用了Show()和Hide()函数,因为只要主应用程序正在运行,我就不想关闭这个表单。现在,如果我从“任务管理器 - >应用程序选项卡”关闭表单,则此表单将被处理掉。我的功能如下:

public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null)
{
fullScreen = new fullScreen();
}

return fullScreen;
}

现在当我调用“GetBackFullScreen()。Show()”时,我得不到显示Disposed Object表单。有人可以提出解决方案吗?提前谢谢。

2 个答案:

答案 0 :(得分:3)

public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
if(fullScreen == null || fullScreen.IsDisposed)
{
    fullScreen = new fullScreen();
}

return fullScreen;
}

获取是否处理表单,如果是,则创建一个新实例。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.isdisposed.aspx

答案 1 :(得分:0)

我不完全理解这里的问题,但也许您可以尝试以下方法:

public static fullScreen = null;

public FormFullScreen GetBackFullScreen()
{
    if(fullScreen == null)
    {
        fullScreen = new fullScreen();
        fullScreen.Closed += (s, e) => fullScreen = null;
    }
    return fullScreen;
}

这将确保每当表单关闭时,后备字段都会被清除,从而随后会创建一个新表单。