我有一个服务应用程序,它在用于长时间运行的任务的过程中创建 AppDomain。我一直在通过将它们存储在具有唯一 ID 的哈希表中来跟踪它们。
任务完成后,服务应用程序会卸载分配给该任务的 AppDomain,然后将其从 appdomain 哈希表中删除。
纯粹从完整性检查的角度来看,有没有一种方法可以查询 CLR 以查看创建应用程序域仍加载哪些应用程序域(即,我可以将跟踪 Hashtable 与 CLR 实际看到的内容进行比较)?
AFAIK,您需要保留自己的列表 - 就像您已经一样。
如果您使用非托管 API,您可以设置一个 DomainManager,在每次创建 AppDomain 时调用它,您会发现许多部分正在创建自己的 AppDomain,例如 WCF。自定义 Microsoft .NET Framework 公共语言运行时中有详细说明
另一条路线是使用调试 API。
我想你也想看看这篇文章——“在 WPF 中使用应用程序域”。