我正在读代码,有一个像这样的单例类:
class Employee
{
public static readonly Employee Instance = new Employee();
private Employee()
{
/* This messageBox shows different numbers */
MessageBox.Show("Thread ID " + Thread.CurrentThread.ManagedThreadId);
}
}
此类的构造函数在同一进程中被调用两次,而不创建另一个Domain。构造函数中的messageBox显示两个不同的数字。可能还是我错了?
注意:我在c ++项目中托管我的可执行程序集,但没有不同之处,许多大型项目都正常工作。
答案 0 :(得分:-1)
这解决了你的问题,但单例的实现太错了。
class Employee
{
private static Employee _instance;
private static object syncRoot = new Object();
public static Employee Instance
{
get
{
lock (syncRoot)
{
if (_instance != null)
_instance = new Employee();
}
return _instance;
}
}
private Employee()
{
/* This messageBox shows different numbers */
MessageBox.Show("Thread ID " + Thread.CurrentThread.ManagedThreadId);
}
}