我有一个服务应用程序,它在用于长时间运行的任务的过程中创建AppDomain。我一直在跟踪它们,将它们存储在具有唯一ID的Hashtable中。
任务完成后,服务应用程序将卸载分配给该任务的AppDomain,然后将其从appdomain Hashtable中删除。
纯粹从健全性检查的角度来看,有没有办法可以查询CLR以查看创建应用程序域仍然加载了哪些应用程序域(即我可以将跟踪Hashtable与CLR实际看到的内容进行比较) ?
答案 0 :(得分:2)
AFAIK,你需要保留自己的名单 - 就像你已经一样。
答案 1 :(得分:2)
如果您使用非托管API,您可以设置一个在每个AppDomain创建时调用的DomainManager,您会发现许多部分正在创建自己的AppDomain,例如: WCF。详细解释在Customizing the Microsoft .NET Framework Common Language Runtime
另一种方法是使用调试API。
答案 2 :(得分:2)
我想您也想查看这篇文章 - “Working with Application Domains in WPF”。