我最近遇到了一个错误,只有在将库构建为发布版本而不是调试版本时才会显示出来.该库是一个带有COM包装器的.NET DLL,我使用CoCreateInstance在非托管c ++应用程序中从dll创建一个类.当我最终跟踪错误时,它是由访问单个对象引起的.我将单例实例声明为:
private static readonly MyObjectType s_instance = new MyObjectType;
Run Code Online (Sandbox Code Playgroud)
然后使用以下方法访问它:
public static MyObjectType Instance
{
get
{
return s_instance;
}
}
Run Code Online (Sandbox Code Playgroud)
这是失败的.将其更改为:
private static MyObjectType s_instance;
public static MyObjectType Instance
{
get
{
if (s_instance==null)
{
s_instance = new MyObjectType();
}
return s_instance;
}
}
Run Code Online (Sandbox Code Playgroud)
解决了这个问题.任何想法为什么初始使用不起作用,以及是否有任何缺点,无论如何做到这一点?
发布dll似乎可以从另一个托管应用程序中完全使用.
归档时间: |
|
查看次数: |
1775 次 |
最近记录: |