1

現在、複数の Java プロセスを開始および停止できる Windows フォーム アプリケーション (C#) を作成しようとしています (特定の jar ファイルを実行するためのパラメーターを使用)。

各プロセスの開始に問題はありません。ただし、アプリケーションが終了するときに、アプリケーションが終了するときにそれらすべてを閉じる方法を見つける必要があります.アプリケーションが実行されている (そしてプロセスの出力をキャッチしている)。

私はこれを見ました:アプリケーションが閉じているときに別のプロセスを閉じる

しかし、私の目的にはうまくいかないようです(プロセスを閉じません)。

4

2 に答える 2

1

私の目的ではうまくいかないようです..(プロセスを閉じません)。

しかし、それは何をしますか?少なくとも Java ウィンドウを閉じますか? あなたの Java アプリケーションにはウィンドウがありますか?

一般に、

  1. 可能であれば (つまり、Java アプリケーションを自分でビルドする場合)、C# と Java アプリケーションの間にメカニズムをセットアップして、Java アプリケーションにシャットダウンするように適切に通知する必要があります (ソケットなど)。
  2. それができない場合でも、Java アプリケーションがグラフィカルであれば、 WM_CLOSE を送信することで正常にシャットダウンできる可能性があります。これはProcess.CloseMainWindow/Process.Close、あなたが試みた(そして失敗した)アプローチが行うことです。Java アプリケーションがコンソール アプリケーションの場合は、標準入力を閉じたり、代わりにシミュレートしたりできます。^C
  3. 最後に、他のすべてが失敗した場合は、Process.KillJava 子プロセスを終了するために使用します。制御プロセスに上記の 1. または 2. を最初に試してもらい、すべての子プロセスが終了するか、短い時間 (たとえば 3 秒) が経過するまで待ってから、Process.Killまだ終了していないプロセスに進みます。 .
于 2012-11-18T18:06:43.540 に答える
0

procrss.killKill メソッドは、Process を暴力的かつ迅速に終了させる優れた方法です。Kill メソッドは、いくつかの例外をスローする可能性があります。しかし、冷酷な殺人と迅速で痛みのない処刑の間のどこかにある、あなたの望む目的を達成しないことが多く、通常は達成します.

于 2012-11-18T18:12:32.233 に答える