0

キャッチを「リッスン」するバックグラウンドプロセスを備えた1つのメインプログラムを(たとえば、sendDebugInfo(Exception e)などの関数を介して)作成し、2番目のコンソールを再表示してメッセージを表示するようにするにはどうすればよいですか。デバッグ ウィンドウでは、プログラムは終了しません。

上記が十分に明確でない場合は、単純なバージョンを次に示します。

コンソール アプリケーション 1 の関数 helloWord() が使用される コンソール アプリケーション 1 の関数 helloWorld() が文字列を 2 番目のコンソール ウィンドウに送信します (ただし、同じプロジェクト内) 2 番目のコンソールには「hello world」が表示されます。

4

2 に答える 2

3

あなたは本当にプロセス間通信 (IPC) について質問しています。

IPC を達成するには多くの方法があります。Named Pipes をご覧になることをお勧めします。それらは使いやすく、非常に信頼性があります。

http://msdn.microsoft.com/en-us/library/system.io.pipes.aspx

名前付きパイプの背後にある基本的な考え方は、あるプロセスでメッセージを書き込み、別のプロセスでメッセージを読み取ることができる名前付きリソースがあるということです。メッセージは何でもかまいません。プロセスは、事前に合意された名前を使用するだけでパイプに接続します。

于 2012-11-27T22:29:55.173 に答える
2

明確にするために、異なるスレッドで実行される 2 つのコンソール アプリケーションが必要であると言うのは、やや誤解を招く可能性があります。通常、コンソール アプリケーションは完全に異なるプロセスで実行されます。スレッドはプロセス間で共有されないため、2 つのコンソール アプリケーションを異なるスレッドで実行するのが一般的です。ただし、これを明示的に言うと、同じプロセスで実行しようとしているように聞こえますが、異なるスレッドが可能かどうかはわかりません。

そうは言っても、Eric J. の言うとおり、さまざまな方法で実行できる IPC について質問しているようです。名前付きパイプは 1 つの方法であり、TCP ループバックは別の方法です。ある時点でこれらのアプリケーションを別々のマシンで実行したい場合は、TCP を使用する必要があります。それ以外の場合は、名前付きパイプの方が処理がはるかに簡単です。

IPC を読んで、ニーズに合った方法を見つけて、それを機能させることをお勧めします。「メッセージが届かない」などの特定の問題が発生した場合は、戻って同様の質問を検索するか、新しい質問を作成する必要があります。

于 2012-11-27T23:15:00.340 に答える