以前は、GUIのC#ツールから非GUI GUIツールを起動する必要がありました。両方とも書いていました。私は両方のツール間で通信するために標準入出力ストリームを使用しました。
ツールを正常に終了する必要があることを示すコマンドについては、stdin
でC++ツールがリッスンできるようにすることができます。次に、C#アプリケーションでquitコマンドを送信し、妥当な時間を待ってからツールが終了していない場合は、終了します。
私はC++はC++側のためにあなたの例を与えるために十分ではないことを残念ですが、次の行が終了する外部プロセスを伝えるために、私のC#プロジェクトで使用されています
m_consoleProcess.StandardInput.WriteLine("QUIT");
m_consoleProcess.WaitForExit(10000);
if (!m_consoleProcess.HasExited)
{
m_consoleProcess.Kill();
}
別々の外部プロセスを管理する必要がある場合は、それぞれのインスタンスに1つずつProcess
インスタンスを格納する必要があり、アプリケーションを終了する前に外部プロセスが終了したケースを処理する必要があります。
クラスには、クリーンアップを実行し、クローズ(または実行を停止)する必要のあるオブジェクトを閉じるDispose()メソッドが必要です。 – jdweng
私はあなたがProcess.Kill()を使うべきではないと思います。むしろ、2つのアプリケーション間でメッセージ(udp ...)を送信し、完了したらそのアクションを強制終了します。 –
[asyncのいくつかの例:](http://stackoverflow.com/a/611127/3060520) –