1

そのため、私のコンピューターには多くのエラーがあります。99% の確率で、explorer.exe が愚かであることが原因です。手動で停止することもできますが、10分ごとに自動的に停止および開始するスケジュールを設定できるのではないかと考えていたので、もう問題はありません。私が持っているコードは機能しませんが、とにかく入れます:

foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
        {
            if (myProc.ProcessName == "explorer.exe")
            {
                myProc.Kill();
            }
        }

実行すると、まったく何も起こりません。Visual Studio はエラーを出さず、プログラムはクラッシュしません。何もしません。

4

4 に答える 4

4

アンチパターンfor-if使用は避けてください:

var explorers = Process.GetProcessesByName("explorer");
foreach (var thisExplorer in explorers)
{
    thisExplorer.Kill();
}

編集:コメントに指摘されているように。

于 2012-07-09T23:09:17.303 に答える
0

プロセス名は単に「explorer」です

編集:これは私のボックスでトリックを行いました:

foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
        {
            if (myProc.ProcessName == "explorer")
            {
                myProc.Kill();
            }
        }
于 2012-07-09T22:48:56.883 に答える
0

通常、特定のメソッド/プロパティの出力を調べてから、それが何を含んでいるかを把握することをお勧めします。

この場合、myProc.ProcessNameプロセスの拡張は含まれません。だから「エクスプローラー」と比較してください。

さらに、コレクションを foreach している間にコレクションを変更すると、通常は実行時エラーが発生します。

于 2012-07-09T22:49:44.883 に答える
0

あなたもLinqの方法でそれを行うことができます

List<Process> processes = Process.GetProcesses().Where(p => p.ProcessName == "explorer").ToList();

foreach (var process in processes)
{
  process.Kill();
}
于 2012-07-09T23:14:40.043 に答える