C# 单例表单模式,如何运行 2 个或更多表单? [关闭]
Posted
技术标签:
【中文标题】C# 单例表单模式,如何运行 2 个或更多表单? [关闭]【英文标题】:C# Singleton Form pattern, how to run 2 and more forms? [closed] 【发布时间】:2013-03-11 03:54:19 【问题描述】:我正在尝试同时运行多个单例表单,但遇到了问题。 我想运行几个相同的表单,因为它们是同一个对象,我不想制作几个单例对象(如果创建的对象很少,单例就会失去它的意义)。 我有这个单例形式的代码:
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 个或更多单例表单?如果可能的话(我的意思是很容易做到)?
附:有人告诉我这是可能的,我应该尝试一下。
【问题讨论】:
“多个单例形式”是矛盾的。显然,您实际上并不想要这里的单身人士。所以不要使用它。 实际上,您可能需要一个特定表单的实例。 @Lloyd 是的 - 但是 OP 想要乘以实例化一个单例,这没有意义 @Charleh Yeh 你当然是对的。 为什么要使用 f1.Show() 和 Application.Run(f2)?为什么不将 Show-Method 用于这两种形式? 【参考方案1】:这是Singleton模式,意味着你只能得到一个SINGLE对象。如果要获取 N* 个对象,只需将其从单例中删除并调用构造函数即可。
如果你真的想要,你可以创建某种混合静态,允许你设置可以返回的最大实例数。
public static int MaxInstances;
public static List<MyObject> instanceList;
public static MyObject GetInstance()
//Fill the instance list up to the MaxInstances
但是,管理这将是困难的,并且可能会导致错误。我猜你也许可以传回实例的索引,然后也可以通过索引请求实例。但是,再一次,这似乎很容易出错,你应该像正常一样使用实例
【讨论】:
以上是关于C# 单例表单模式,如何运行 2 个或更多表单? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章