-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);

しかし、それは1フォームしか実行しません。

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 に答える