一度に 1 つのインスタンスしか実行できない Windows フォーム アプリケーションがあります。Mutex を使用して Singleton を実装しました。アプリケーションは、コマンドラインから (パラメーターの有無にかかわらず) 起動できる必要があります。アプリケーションはスクリプトによって開始および終了されます。ユーザーはそれに対してアクションを実行できません。
したがって、アプリケーションの目的は、エンドユーザーに視覚的およびグラフィカルな情報を表示するだけの単純な「インジケーター」アプリケーションです。エンド ユーザーは何もできません。見るだけです。視覚的およびグラフィカルな外観が比較的簡単に実装できるため、Windowsフォームアプリケーションです(最上位、ボーダレスなどを取得できます)。
簡単に言えば、誰かが exit コマンドライン パラメータを使用して同じアプリケーションを実行しようとしたときに、現在実行中のアプリケーションを終了するにはどうすればよいですか?
bool quit = (args.Length > 0 && args[0] == "quit") ? true : false;
using (Mutex mutex = new Mutex(false, sExeName))
{
if (!mutex.WaitOne(0, true))
{
if (quit)
{
// This is the tricky part?
// How can I get reference to "previous" launced
// Windows Forms application and call it's Exit() method.
}
}
else
{
if (!quit)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}