如何获取应用程序创建的应用程序域列表?

时间:2008-10-05 05:21:33

标签: c# .net clr appdomain

我有一个服务应用程序,它在用于长时间运行的任务的过程中创建AppDomain。我一直在跟踪它们,将它们存储在具有唯一ID的Hashtable中。

任务完成后,服务应用程序将卸载分配给该任务的AppDomain,然后将其从appdomain Hashtable中删除。

纯粹从健全性检查的角度来看,有没有办法可以查询CLR以查看创建应用程序域仍然加载了哪些应用程序域(即我可以将跟踪Hashtable与CLR实际看到的内容进行比较) ?

3 个答案:

答案 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”。