質問:子供のプロセスツリーのすべてのプロセスを削除するにはどうすればよいですか?その後、WXP(および新しいMSWindows)でC#を使用して[グランド]の子プロセスをすべて終了する方法
が- は、サーバーからのデータのセットを取得し、
- スポーンデータを処理するために、サードパーティ製のユーティリティ、
- 戻る:
私は意志のアプリケーション、C#で書かを持っています結果はサーバーに送られます。
これは問題なく動作します。しかし、実行はを多く消費するので、CPUのとはに1時間かかることがあります。私のアプリが子プロセスを終了させる機能を追加したいと思います。
私が他の場所で見つけたシンプルなソリューションを作るいくつかの問題があります:
- マイアプリの子プロセス「A」(InstallAnywhereのEXEと思うが)、実際の処理アプリ「B」(のjavaを生成します。 exe)、これはより多くの子供 "C1" .. "Cn"(のほとんどはもJavaで書かれています)を生成します。
- 私のアプリケーションの複数のコピー(したがって複数のその子のセット)が同じマシン上で実行されている可能性があります。
- 子プロセスが私の管理下にないため、今後「D」プロセスがある可能性があります。
- 私のアプリケーションは、32ビットのとのMSWindowsの64ビットバージョンで実行する必要があります。
データ損失の問題はありません。プロセスがかなり早く終了する限り、「クリーン」シャットダウンは問題ありません。
は別の「C」を生む可能性がこれはうまくいかないかもしれませんが、それは私に正しい答えにつながりました。私はプロセスIDのリストを取得し、次にそれらをトップダウンで削除する必要がありました。私のソリューションは、Process.GetProcesses()を1回通過してツリーを構築し、呼び出し元がトップダウンまたはボトムアップを終了させたり、ツリーのデータだけを使用したりすることができます。 – NVRAM