4

基本的に、私がインターネット上で検索した小さなことについて理解したことから、スレッドは 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ですか? これは可能ですか?私が達成しようとしているのは、2 つのドメイン間でクラスのインスタンスを共有することです。

4

2 に答える 2

8

クラスのインスタンスを 間で直接共有することはできませんAppDomain。そのためには、からクラスを派生させ、MarshalByRefObjectリモーティングを使用して other からインスタンスにアクセスする必要がありますAppDomain

于 2009-06-26T12:47:26.403 に答える
1

.Net のオブジェクトは、1 つの AppDomain にのみ存在できます。同時に 2 つの AppDomains に存在することはできません。

ただし、.Net Remoting を使用して、.Net オブジェクトのプロキシを一度に複数の AppDomains にプッシュできます。これにより、オブジェクトが複数のドメインにあるように見えます。私はこれがあなたが探しているものだと信じています。

オンラインで利用できる多くのチュートリアルがあります。Google で「.Net Remoting Tutorial」を検索すると、正しい軌道に乗ることができます。

于 2009-06-26T12:54:46.403 に答える