为什么即使退出应用程序后,SingleTon实例也在内存中

时间:2015-01-30 13:54:13

标签: c# wpf c#-4.0 singleton mef

我通过传递MyServiceLibrary对象来构建IServiceProvider实例,然后通过GetInstance()

获取单例实例
 _serviceProvider = (IServiceProvider)GetInterface("IServiceProvider");  
    MyServicesLibrary.BuildInstance(_serviceProvider);
   var _myserviceLib= MyServicesLibrary.GetInstance();

BuildInstance是:

 public static void BuildInstance(IServiceProvider serviceProvider)
    {
        if (serviceProvider == null)
        {
            throw new ArgumentNullException("serviceProvider");
        }

        if (_singletonInstance == null)
        {
            _singletonInstance = new MyServicesLibrary(serviceProvider);
            _serviceProvider = serviceProvider;
        }
    }

GetInstance只返回构建的对象。

public static MyServicesLibrary GetInstance()
        {
            if (_singletonInstance == null)
            {
                throw new InvalidOperationException("BuildInstance method should be called first");
            }
            return _singletonInstance;
        }

但问题是,当我第一次运行应用程序并在BuildInstance上设置断点时,_singletonInstance为空,然后它会创建实例。

然后我关闭应用程序并重新运行它。令人惊讶的是,此时_singletonInstance不为空。我无法理解当我关闭应用程序时_singletonInstance是如何从内存中删除的。

请指点什么?

0 个答案:

没有答案