8

.NET ではProcess.GetProcessById、この ID を持つプロセスが実行されていない場合、例外がスローされます。例外をスローしないように、このメソッドを安全に呼び出す方法は? みたいなことを考えている

if(Process.IsRunning(id)) return Process.GetProcessById(id);
else return null; //or do something else

しかし、おそらく実行中のすべてのプロセスを取得し、リストにIDが存在するかどうかを確認する以外に、IDを確認する方法が見つかりません。

4

4 に答える 4

15
public Process GetProcByID(int id)
{
    Process[] processlist = Process.GetProcesses();
    return processlist.FirstOrDefault(pr => pr.Id == id);
}

Process.GetProcessByIdメソッドの中を調べました。

内部静的クラスProcessManagerを使用して、プロセスが確実に実行されるようにします。ProcessManagerは、システムで現在実行されているすべてのプロセスを取得し、そこでIDをチェックするため、これが最善の方法だと思います。

Processしたがって、例外のオーバーヘッドまたは配列のオーバーヘッドを考慮する必要があります。

于 2013-02-20T09:06:55.207 に答える
3

try-catch ブロックを使用するだけです

Process p = null;
try{
  p = Process.GetProcessById(id);
}
catch(Exception){

}
return p;
于 2013-02-20T09:00:48.427 に答える
1

ええ、try+catchを使用するとおそらくうまくいくでしょう。プロセスが実行されていない場合、例外をスローする代わりに何も起こりません。

于 2013-02-20T09:06:02.657 に答える