示例#1
0
 public static void EnsureCreated()
 {
     // Only create in the default domain
     if (AppDomain.CurrentDomain.IsDefaultAppDomain() && _singleton == null)
     {
         lock (_singletonLock) {
             if (_singleton == null)
             {
                 _singleton = new RecycleLimitMonitorSingleton(AspNetMemoryMonitor.ProcessPrivateBytesLimit);
                 AppDomain.CurrentDomain.SetData(RecycleLimitMonitor._name, _singleton);
             }
         }
     }
 }
示例#2
0
        void GetSingleton()
        {
            ApplicationManager appManager = HostingEnvironment.GetApplicationManager();

            if (_defaultDomainSingleton == null && appManager != null && !AppDomain.CurrentDomain.IsDefaultAppDomain())
            {
                lock (_singletonLock) {
                    if (_defaultDomainSingleton == null)
                    {
                        AppDomain defaultDomain = appManager.GetDefaultAppDomain();
                        defaultDomain.DoCallBack(new CrossAppDomainDelegate(RecycleLimitMonitorSingleton.EnsureCreated));

                        // Keep a proxy reference for later use
                        _defaultDomainSingleton = (RecycleLimitMonitorSingleton)defaultDomain.GetData(_name);
                    }
                }
            }
        }
示例#3
0
 public static void EnsureCreated()
 {
     // Only create in the default domain
     if (AppDomain.CurrentDomain.IsDefaultAppDomain() && _singleton == null)
     {
         lock (_singletonLock) {
             if (_singleton == null)
             {
                 var pbLimit = AppDomain.CurrentDomain.GetData(RecycleLimitMonitor._pbLimit);
                 if (pbLimit == null)
                 {
                     return;
                 }
                 _singleton = new RecycleLimitMonitorSingleton((long)pbLimit);
                 AppDomain.CurrentDomain.SetData(RecycleLimitMonitor._name, _singleton);
             }
         }
     }
 }