【问题标题】:AppDomain and threadingAppDomain 和线程
【发布时间】:2009-06-26 12:41:12
【问题描述】:

基本上,根据我在互联网上搜索到的少量信息,线程可以在 AppDomain 之间传递。现在,我编写了以下代码:

    const string ChildAppDomain = "BlahBlah";
    static void Main()
    {
        if (AppDomain.CurrentDomain.FriendlyName != ChildAppDomain)
        {
            bool done = false;
            while (!done)
            {
                AppDomain mainApp = AppDomain.CreateDomain(ChildAppDomain, null, AppDomain.CurrentDomain.SetupInformation);
                try
                {
                    mainApp.ExecuteAssembly(Path.GetFileName(Application.ExecutablePath));
                }
                catch (Exception ex)
                {
                    // [snip]
                }
                AppDomain.Unload(mainApp);
            }
        }
        else
        {
            // [snip] Rest of the program goes here
        }
    }

这一切正常,一切都在点击到位......主线程进入我的程序的新版本并开始在主应用程序主体中运行。我的问题是,我将如何让它回到父母AppDomain?这可能吗?我想要实现的是在两个域之间共享一个类的实例。

【问题讨论】:

    标签: c# appdomain


    【解决方案1】:

    您不能直接在AppDomains 之间共享类的实例。为此,您应该从MarshalByRefObject 派生类,并使用远程处理从另一个AppDomain 访问实例。

    【讨论】:

    【解决方案2】:

    .Net 中的一个对象只能存在于一个 AppDomain 中。它不可能同时存在于 2 个 AppDomain 中。

    但是,您可以使用 .Net Remoting 一次将 .Net 对象的代理推送到多个 AppDomain 中。这将使您的对象看起来像是在多个域中。我相信这就是您正在寻找的。​​p>

    网上有很多教程。谷歌搜索“.Net Remoting Tutorial”,这会让你走上正轨。

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多