-7

我正在尝试同时运行多个单例表单,但是遇到了问题。我想运行几个相同的表单,因为它们是同一个对象,我不想制作几个单例对象(如果创建的对象很少,单例就会失去它的意义)。我有这个单例形式的代码:

class SingletonForm : Form
{
    private static readonly SingletonForm instance = new SingletonForm();

    public static SingletonForm Instance
    {
        get
        {
            return instance;
        }
    }
}

我试着做:

    SingletonForm f1 = SingletonForm.Instance;
    SingletonForm f2 = SingletonForm.Instance;
    f1.Show();
    Application.Run(f2);

但它只运行一种形式。

如何运行它以便它可以同时运行 2 个或更多单例表单?如果可能的话(我的意思是很容易做到)?

PS 有人告诉我这是可能的,我应该尝试一下。

4

1 回答 1

2

它是Singleton模式,这意味着您只能获得一个SINGLE对象。如果要获取 N* 个对象,只需将其从单例中删除并调用构造函数即可。

如果你真的想要,你可以创建某种混合静态,允许你设置可以返回的最大实例数。

public static int MaxInstances;
public static List<MyObject> instanceList;
public static MyObject GetInstance()
{
    //Fill the instance list up to the MaxInstances
}

但是,管理这将是困难的,并且可能会导致错误。您也许可以传回我猜想的实例的索引,然后也按索引请求实例。但是,再一次,这似乎很容易出错,你应该像平常一样使用实例

于 2013-03-21T14:59:03.727 回答