我遵循了实现单例类的代码(双重检查锁定)
public sealed class Plugin
{
#region Private Fields
private static volatile Plugin _instance;
private static object syncRoot = new Object();
private Dictionary<int, string> myMap;
#endregion
private Plugin()
{
myMap = MapInit(GetMainModuleName());
}
static Plugin()
{ }
public static Plugin Instance
{
get
{
if (_instance == null)
{
lock (syncRoot)
{
if (_instance == null)
_instance = new Plugin();
}
}
return _instance;
}
}
}
单例实例在调试模式下正确构建,一切似乎都运行良好。但是在发布模式下,实例在它被正确构造之前就被返回了,即myMap 没有被初始化。
另外需要注意的是,以下代码在调试模式下完全执行大约需要 10 -15 秒
myMap = MapInit(GetMainModuleName());
这是一些编译器优化的问题吗?请帮忙