我最近遇到了一个错误,该错误仅在将库构建为发布版本而不是调试版本时才表现出来。该库是一个带有 COM 包装器的 .NET dll,我正在使用 CoCreateInstance 从非托管 c++ 应用程序中的 dll 创建一个类。当我最终追踪到这个错误时,它是由访问一个单例对象引起的。我有这样声明的单例实例:
private static readonly MyObjectType s_instance = new MyObjectType;
然后通过以下方式访问它:
public static MyObjectType Instance
{
get
{
return s_instance;
}
}
这是失败的。将其更改为:
private static MyObjectType s_instance;
public static MyObjectType Instance
{
get
{
if (s_instance==null)
{
s_instance = new MyObjectType();
}
return s_instance;
}
}
解决了这个问题。任何想法为什么最初的使用不起作用,以及这样做是否有任何缺点?
发布 dll 似乎完全可以从另一个托管应用程序中使用。