相关疑难解决方法(0)

为单例创建静态实例的这些方法有何不同?

我最近遇到了一个错误,只有在将库构建为发布版本而不是调试版本时才会显示出来.该库是一个带有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似乎可以从另一个托管应用程序中完全使用.

.net com singleton

6
推荐指数
1
解决办法
1775
查看次数

.net中的静态变量分配时间

当分配静态变量时,即在声明类时或在创建对象时?

c#

3
推荐指数
1
解决办法
734
查看次数

标签 统计

.net ×1

c# ×1

com ×1

singleton ×1