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