0

mutexEnvironment.Exit(0)(コンソールアプリ)、 (Winフォーム)を使用してSOの周りに浮かんでいるさまざまな例がたくさんあり、Application.Exit()使用しないように言っている投稿がたくさんありますprocess.kill()

誰かが私のアプリケーションの他のインスタンスを閉じる方法の政治的な誤りを説明できますか?Windowsフォームアプリです。これは私のローカル環境では完全に機能しているように見えますが、私が気付いていないいくつかの堅牢な問題があるのではないかと心配しています。

    // I get the current process name and ID
    string currentProcName = Process.GetCurrentProcess().ProcessName;
    int currentProcID = Process.GetCurrentProcess().Id;

    // I then get a list of all process running under this name
    Process[] currentProcess = Process.GetProcessesByName(currentProcName);

    foreach (Process proc in currentProcess)
    {
        // if the found process id is using the same name, but not this current id, kill it.
        if (proc.Id != currentProcID)
        {

            proc.Kill(); // Documentation says it imediatly stops the associated process.
            proc.Close(); // Documentation says that it frees all resources associated with this component

        }
    }  

ドキュメントによると、これは実行中のアプリケーションの他のインスタンスを閉じるための合理的な方法だと思います。経験豊富な人が問題がある場合、それを指摘できますか?アトミック性は別として、例外処理を追加します。

4

1 に答える 1

0

参考までに、ここでレイモンド・チェンに任せる必要があります。

協力的な方法でプロセスを閉じることは、プロセスを取り除くための最良の方法です。これにより、適切なシャットダウン/クローズが可能になります。プロセスを強制終了すると、基本的に が呼び出さTerminateProcessれ、実行中のプロセスが完全に停止され、バグ作成者が強制終了されます。

于 2013-02-08T20:32:30.397 に答える