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

解决方案 »

  1.   

    2. (answser from msdn)应用程序域可以在不停止整个进程的情况下卸载。宿主可以利用这一特点来卸载不再需要的代码,从而减少内存占用并增加其应用程序的可缩放性。System.AppDomain 类包括一种名为 Unload 的静态方法,宿主可以使用此方法来卸载特定的应用程序域。AppDomain.Unload 将执行正常关机,只要存在任何活动线程,就不会将域卸载。如果程序集已加载到默认域中或者已经以非特定于域的形式加载,除非关闭整个进程或从进程中卸载运行库,否则无法卸载这些程序集。ICorRuntimeHost 接口包括一个名为 Stop 的方法,宿主可以使用该方法从进程中强制卸载运行库。当调用 Stop 时,将立即卸载所有域(包括默认域和所有非特定于域的代码),并从进程中全部移除运行库。当对进程调用 Stop 后,不能将运行库加载回该进程。要再次开始运行托管代码,必须创建一个新的进程。 
      

  2.   

    你所说的是CLR默认的domain,它和CLR具有相同的生命周期。你可以再建几个domain然后退出程序,后来的几个domain会卸掉的。
      

  3.   

    我怎样检测一个appdomain是否有缷载掉?
      

  4.   

    我怎样检测一个appdomain是否有缷载掉?\--------------------------------------
    那你怎么知道“当应用程序退出时,这个appdomain并没有被自动卸载掉”
      

  5.   

    DomainUnload 事件可以监测到
      

  6.   

    大家帮忙回答第一个问题:
    1、一个进程中可以包含多个appdomain,那个怎么枚举当前进程中所包含的appdomain呢这个问题才是最关键,早知我不加上第二个问题了。