繁体   English   中英

我有一个 singleton 表单名称 FCD 无法访问已处理的 object 的问题。 Object 名称:'FCD'。

[英]I have this problem with a singleton form name FCD Cannot access a disposed object. Object name: 'FCD'.'

这里的代码错误这是另一种形式,其中包含一个按钮以午餐 FCD 形式

private void Button1_Click(object sender, EventArgs e)
    {

        f = FCD.getInstance();
        f.Show();
   

    }

class FDC 是

public partial class FCD : Form
{
    private static FCD instance=null;
    private FCD()
    {
        InitializeComponent();
        load();
    }

    public static FCD getInstance()
    {
        if(instance == null)
        {
            instance = new FCD();
        }
        return instance;
    }

问题是当我执行 fcd 表单时,它第一次工作,当我关闭它时我再试一次,他们给了我这个问题

检查实例IsDisposed是否。 尝试以下操作:

从更改

public static FCD getInstance()
{
    if(instance == null)
    {
        instance = new FCD();
    }
    return instance;
}

public static FCD getInstance()
{
    if(instance == null || instance.IsDisposed)
    {
        instance = new FCD();
    }
    return instance;
}

所以经过一番大讨论后,我找到了这个解决方案

private void Button1_Click(object sender, EventArgs e)
    {
        if(f!=null)
        if (f.IsDisposed)
        {
            FCD.setInstanceNull();
        }

        f = FCD.getInstance();
        f.Show();
       
   

    }

如果表单关闭,我添加一个设置实例 = null 的方法

    public static void setInstanceNull()
    {
        instance = null;

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM