1

簡単に言うと、次の3つのクラスを持つコンソールアプリケーションです。

namespace Stackoverflow
{
    public class Program
    {
        public static void Main ( string [ ] args )
        {
            new Consumer ( );
            new Provider ( );

            Console . WriteLine ( "Exit ..." );
            Console . ReadKey ( );

        }
    }

    public class Consumer
    {
        public Consumer ( )
        {
            using ( Process Process = Process . GetCurrentProcess ( ) )
            {
                Console . WriteLine ( "Consumer : " + Process . ProcessName );
            }
        }
    }

    public class Provider
    {
        public Provider ( )
        {
            using ( Process Process = Process . GetCurrentProcess ( ) )
            {
                Console . WriteLine ( "Provider : " + Process . ProcessName );
            }
        }
    }
}

出力は次のようになります、

Consumer : Stackoverflow.vshost
Provider : Stackoverflow.vshost
Exit ...

質問:
各クラスを異なるソリューション、特にプロバイダークラスとコンシューマークラスに分離せずに、異なるプロセスにアタッチできますか?
テスト用です。モバイルエージェント関連のテスト。

前もって感謝します。
よろしく、

4

4 に答える 4

1

これがあなたが達成しようとしていることを正確に実行するかどうかはわかりませんが、メインアプリケーションの実行中に別のAppDomainにコードをロードすることができます。次のMSDNの記事には、完全な例を使用してこれを行うための情報が含まれています。

AppDomainのMSDN記事から:

アプリケーションドメインは、実行中のアプリケーションを分離するための柔軟で安全な方法を提供します。

于 2012-07-12T13:54:55.643 に答える
1

最善の方法は、各クラスを異なるスレッドで開始することです。

現在のプロセスの「内部」に新しいプロセスを作成することはできません。

于 2012-07-12T13:48:39.993 に答える
0

プログラムの実行時に実行する必要のある具象クラスを定義して、個別のプロセスを実行します。これを定義するには、単純なコマンドライン引数を使用できます。したがって、プログラムはコマンドライン引数を読み取り、実行するタイプを決定します。

たとえば:

    public static void Main(string[] args)
    {
        if(args[0] == "consumer") 
          //run consumer 
        else 
          //run provider (as default)

    }

お役に立てれば。

于 2012-07-12T13:51:05.080 に答える
-2

単純な間違い。を追加しませんでした{0}'。あなたのために修正されました:

public class Program
{
    public static void Main(string[] args)
    {
        new Consumer();
        new Provider();

        Console.WriteLine("Exit ...");
        Console.ReadKey();

    }
}

public class Consumer
{
    public Consumer()
    {
        using(Process p = Process.GetCurrentProcess())
        {
            Console.WriteLine("Consumer : {0}", p.ProcessName);
        }
    }
}

public class Provider
{
    public Provider()
    {
        using(Process p = Process.GetCurrentProcess())
        {
            Console.WriteLine("Provider : {0}", p.ProcessName);
        }
    }
}

出力:

Consumer : SOF
Provider : SOF
Exit ...
于 2012-07-12T13:51:02.420 に答える