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); } } } }
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); } } } }
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); } } } }