private static void OnShutdown(object sender, EventArgs e)
        {
            lock (_dictionary)
            {
                // Setting this to true prevents Add and Remove from modifying the list. This
                // way we call out without holding a lock (which would be bad)
                _shuttingDown = true;
            }

            foreach (WeakReference value in _dictionary.Values)
            {
                IAppDomainShutdownListener listener = value.Target as IAppDomainShutdownListener;
                if (listener != null)
                {
                    listener.NotifyShutdown();
                }
            }
        }
Esempio n. 2
0
 public AppDomainShutdownNotifier(IAppDomainShutdownListener target) : base(target)
 {
     AppDomain.CurrentDomain.DomainUnload += OnShutdown;
     AppDomain.CurrentDomain.ProcessExit  += OnShutdown;
 }