WPF C#アプリケーションでは、ユーザーは特定のメニューから「explorer.exe」プロセスを起動できます。条件プロセス特定のプロセスのインスタンス数を開始する
これは
Process.Start("explorer.exe");
で、いつものように達成されるしかし、私は、ユーザーがボタンをクリックすることで起動するよう代わりとして、多くの場合で、1つのインスタンスに同時プロセスのエクスプローラの量を制限する必要があります。
したがって、通常は、指定されたプロセスのインスタンス数 "explorer.exe"が実際に実行されているかどうかをカウントし、複数ある場合はProcess.Start()をブロックします。
問題は、私がカウント機能に突っ込んでいることです。ここで私が書いたものである:
static bool CountProcess(string name) {
return false; // by defualt it returns false.
int counter = 0;
while(true) {
counter = Process.GetProcessesByName(name).length; // get the quantity of processes for a given name.
if(counter > 1) {
return true;
break;
}
}
}
それから私はこのとしての機能を呼び出します。
if(countProcess("explorer")) {
// Do nothing.
} else {
Process p = Process.Start("explorer.exe");
}
しかし後のビルドと実行与えられたプロセスを開くときに、アプリがstuckedなります。実際、Visual Studioはデバッグのフィードバックを提供しません。
この機能は、1)運用上、2)効率的になるようにリファクタリングするにはどうすればよいですか。
構文エラー: 'GetProcessByname'はGetProcessByName' –
は、なぜあなたはBEGで偽の権利を返さない'する必要があります関数のイニング? :D後のコードは決して動かないでしょうか? –
また、何らかの理由であなたがそれを殺していない限り、おそらくエクスプローラのインスタンスが常に実行されます。 –