7

新しい子プロセスでメソッドを実行することは可能ですか? 私の例では、メソッドRunを実行できます。これは、プライベートメソッドdoActionを新しいプロセスで実行します(スレッドではありません!)

public class MyClass
{
    public void Run()
    {
        //what should I do there to run 'doAction' in new process?
        doAction();

    }

    private void doAction()
    {
        ...
    }
}
4

1 に答える 1

0

プロセスはメモリを共有せず、プロセス間の通信メカニズムを必要とします。これには、さまざまなメカニズムのいずれかを使用できます。

  1. ファイルまたはデータ - 1 つのプロセスがファイルまたは DB に書き込み、もう 1 つのプロセスがデータまたはファイルの内容に基づいてメソッドを読み取り、実行します。
  2. サービス ホスト/クライアント - WCF、.NET リモーティング、名前付きパイプ、または直接の TCP/IP 通信メカニズムを使用して、1 つのプロセスがサービス インターフェイスの実装をホストし、呼び出しプロセス (クライアント) がサービス インターフェイスのプロキシを使用して呼び出しをシリアル化し、通信します。ホスト プロセスへ - ステートフルなリクエスト/レスポンス インタラクションが必要な場合は、これが最適な方法です。
  3. メッセージ キュー - MSMQ のようなメッセージ キューを使用します。この場合、1 つのプロセスがメッセージをキューに送信し、もう 1 つのプロセスがメッセージを取得してメソッドを実行します。

他にもあると思いますが、これらは最も一般的な3つの方法です。

私のお気に入りは、軽量のサービス ホスト/クライアント シナリオです。これを簡単にするための軽量ユーティリティがいくつかあります。RemotingLiteまたはDuoVia.Netと呼ばれる名前付きパイプをサポートする RemotingLite の独自の拡張機能を使用できます。

于 2013-05-03T19:36:40.950 に答える