1

他のサブプロセスを作成/起動するコンソール アプリがあります。それ自体または彼の ProcessChilds がデッドロックに陥っているかどうかを何らかの方法で確認し、関連するプロセス ツリーの最も若いものを強制終了する必要があります。

この目的のために、彼のプロセスチャイルドは、同じ「一種の再帰的」アルゴリズムを持っている可能性があります。

アイデアは、最年少のプロセスを強制終了するのではなく、最年少のプロセスをコマンドで (いわば) 自殺させることです。

それを行うために、プロセス内で非同期メソッド(おそらく彼の子に存在する必要がある同じメソッド)を呼び出す方法はありますか?

もちろん、永続ファイルとそのファイルの「WatchDog/KeepAliveLook」を使用することもできますが、それが存在しなくなった場合、彼らはそれを実行します(自殺)が、これを行うためのよりクリーンな方法があると確信しています。

4

2 に答える 2

2

プロセス間通信の何らかの方法 (リモーティング、WCF、名前付きパイプ、ウィンドウ イベント、DDE など) を使用して、「ポイズン ピルを食べる」という通知を送信します。より大きな問題は、なぜこれをそのように設計しているのかということです。少し古風で時代遅れのアーキテクチャに聞こえます。

于 2013-03-18T21:24:05.620 に答える
0

プロセスが完全にデッドロックされている場合、そのスレッドは使用できません。プロセス内で (外部的に) 新しいスレッドを作成する必要があります。これは、Windows のデバッグ API でのみ行うことができます。

子プロセスを強制終了したい場合は、プロセス自体を強制終了するのではなく、直接強制終了しないのはなぜですか?

于 2013-03-18T21:24:36.747 に答える