AppDomain和线程

Mat*_*ley 4 c# appdomain

基本上,根据我对小网的了解,我设法在互联网上搜索,线程可以在AppDomains之间传递.现在,我编写了以下代码:

    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
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

Meh*_*ari 8

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