关于AppDomain的问题

gzwatson 2006-04-06 02:16:25
请教两个问题:
1、一个进程中可以包含多个appdomain,那个怎么枚举当前进程中所包含的appdomain呢?
2、我创建了一个appdomain,并加了一个应用程序到这个appdomain,当应用程序退出时,这个appdomain并没有被自动卸载掉,我该怎样才能让它卸载掉。

欢迎各位捧场~
...全文
178 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzwatson 2006-04-08
  • 打赏
  • 举报
回复
大家帮忙回答第一个问题:
1、一个进程中可以包含多个appdomain,那个怎么枚举当前进程中所包含的appdomain呢

这个问题才是最关键,早知我不加上第二个问题了。
jason96450 2006-04-06
  • 打赏
  • 举报
回复
DomainUnload 事件可以监测到
JadyWang 2006-04-06
  • 打赏
  • 举报
回复
我怎样检测一个appdomain是否有缷载掉?\

--------------------------------------
那你怎么知道“当应用程序退出时,这个appdomain并没有被自动卸载掉”
gzwatson 2006-04-06
  • 打赏
  • 举报
回复
顶一下
gzwatson 2006-04-06
  • 打赏
  • 举报
回复
我怎样检测一个appdomain是否有缷载掉?

JadyWang 2006-04-06
  • 打赏
  • 举报
回复
你所说的是CLR默认的domain,它和CLR具有相同的生命周期。你可以再建几个domain然后退出程序,后来的几个domain会卸掉的。
simonzone 2006-04-06
  • 打赏
  • 举报
回复
2. (answser from msdn)

应用程序域可以在不停止整个进程的情况下卸载。宿主可以利用这一特点来卸载不再需要的代码,从而减少内存占用并增加其应用程序的可缩放性。

System.AppDomain 类包括一种名为 Unload 的静态方法,宿主可以使用此方法来卸载特定的应用程序域。AppDomain.Unload 将执行正常关机,只要存在任何活动线程,就不会将域卸载。

如果程序集已加载到默认域中或者已经以非特定于域的形式加载,除非关闭整个进程或从进程中卸载运行库,否则无法卸载这些程序集。

ICorRuntimeHost 接口包括一个名为 Stop 的方法,宿主可以使用该方法从进程中强制卸载运行库。当调用 Stop 时,将立即卸载所有域(包括默认域和所有非特定于域的代码),并从进程中全部移除运行库。当对进程调用 Stop 后,不能将运行库加载回该进程。要再次开始运行托管代码,必须创建一个新的进程。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧