代码之家  ›  专栏  ›  技术社区  ›  Justin Ethier

多个.NET应用程序域的代码示例

  •  7
  • Justin Ethier  · 技术社区  · 14 年前

    What is a .NET Application Domain? :

    您可以在单个进程中运行多个应用程序域,其隔离级别与单独进程中存在的隔离级别相同,但不会产生跨进程调用或在进程之间切换的额外开销。

    我想了解更多关于如何/为什么在应用程序中实际使用多个应用程序域的信息。有人能提供一个实际代码片段的例子吗?

    4 回复  |  直到 8 年前
        1
  •  5
  •   Dan    14 年前

    阅读msdn实际上提供了一些很好的信息。

    http://msdn.microsoft.com/en-us/library/system.appdomain.aspx

    ——丹

        2
  •  3
  •   hoang    8 年前

    我已经在下面的上下文中使用了这个(现在没有现成的代码可以发布)

    • 创建新的appdomain(例如appdomainx)
    • 使用此新域创建对象的新实例
    • 新对象(生活在新对象中)加载一组程序集
    • 反思他们收集一些指标
    • 得到结果
    • 卸载Appdomainx

    这样做的好处是,您可以卸载加载到新创建的appdomain中的程序集。如果您在主Appdomain上一次又一次地加载更多程序集,那么您的Appdomain将增长得惊人。创建一个单独的appdomain允许您在每次检查后卸载,而每次检查又卸载加载到该域的所有程序集,因此主appdomain保持干净。

        3
  •  1
  •   John Knoeller    14 年前

    我研究了一个(主要是)C++软件,允许用户编写脚本来使用C或VB.NET实现应用程序的自动化。该应用程序还有一些组件是用c编写的。它使用一个appdomain作为程序组件,使用另一个appdomain对脚本进行沙箱处理。

    最初的脚本实现为每个脚本创建了一个appdomain,但事实证明这太慢了,并且它阻止了一些有用的脚本行为,因此我们为脚本引擎转到了一个永久的appdomain。

        4
  •  1
  •   No Refunds No Returns    14 年前

    您可能需要使用一个来模拟IIS的处理过程。你需要一个长时间运行的进程来泄漏内存。你可以跟踪广告上处理了多少个请求,如果一个请求达到了阈值,就启动一个新的请求。当旧程序完成所有处理后,卸载它并让CLR清理一些应用程序垃圾。

    别问我怎么知道的。:)

    如果要在不同的安全上下文中运行代码,也可以执行此操作。