static public void DomainUnloadHandler(object sender, EventArgs args) { try { AppDomain ad = sender as AppDomain; IDomainMasterEvents sink = ad.GetData("Sink") as IDomainMasterEvents; if (sink != null) { sink.OnDomainUnload(ad.FriendlyName); } } catch (Exception e) { Console.WriteLine("{1}\n{2}", e.Message, e.StackTrace); } }
static public void AssemblyLoadHandler(object sender, AssemblyLoadEventArgs args) { Debug.Assert(sender as _AppDomain == AppDomain.CurrentDomain); try { AppDomain ad = sender as AppDomain; IDomainMasterEvents sink = ad.GetData("Sink") as IDomainMasterEvents; if (sink != null) { string assembly = args.LoadedAssembly.GetName().Name; sink.OnAssemblyLoad(ad.FriendlyName, assembly); } } catch (Exception e) { Console.WriteLine("{1}\n{2}", e.Message, e.StackTrace); } }
public void AttachSink(IDomainMasterEvents sink) { m_sink = sink; }