我有一个程序集,当访问时会旋转一个线程来处理放在队列中的项目。在该程序集中,我将一个处理程序附加到DomainUnload事件:
AppDomain.CurrentDomain.DomainUnload += new EventHandler(CurrentDomain_DomainUnload);
该处理程序将线程连接到主线程,以便队列中的所有项都可以在应用程序终止之前完成处理。
我遇到的问题是当控制台应用程序终止时,DomainUnload事件不会被触发。任何想法为什么会这样?
使用.NET 3.5和C#
答案 0 :(得分:12)
答案 1 :(得分:1)
您需要订阅特定域的活动。您也不能依赖域在终止时卸载。从此代码中删除注释以查看:
using System;
using System.Reflection;
class Program {
static void Main(string[] args) {
var ad = AppDomain.CreateDomain("test");
ad.DomainUnload += ad_DomainUnload;
//AppDomain.Unload(ad);
Console.ReadLine();
}
static void ad_DomainUnload(object sender, EventArgs e) {
Console.WriteLine("unloaded, press Enter");
Console.ReadLine();
}
}