我正在开发一个具有共享对象的应用程序,该对象可通过单例访问。它在 32 位上工作正常,但在 64 位上它似乎没有正确锁定。在我的对象的构造函数中,我有代码检查一些配置注册键并在它们不存在时提示用户。在 32 位上,我按预期只看到一次提示,但在 64 位上,提示显示了多次。我的代码如下:
private static readonly object padlock = new object();
private static MyClass _instance = null;
public static MyClass Instance
{
get
{
lock (padlock)
{
if (_instance == null)
{
_instance = new MyClass();
}
}
return _instance;
}
}
非常感谢任何输入。
编辑以包含示例用法:
public OtherObject()
{
InitializeComponent();
MyClass.Instance.OtherObjectOrSomething = this;
this.Load += new System.EventHandler<EventArgs>(OtherObject_Load);
}
再次编辑 这是在 Office 加载项中运行的。因此,位数由办公室的安装决定。我定义了一个私有(private)的无参数构造函数。
谢谢
移除了略微匿名的构造函数
最佳答案
它可能是构造函数中代码的内部原因,导致出现多个提示。注册表的 View 将不同于 32 位进程和 64 位进程,因此它们可以响应不同的外部条件
关于c# - 单例实现在 32 位但不是 64 位上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2187090/