起動時にログインフォームを表示し、ユーザーが認証された後にメインフォームを表示する C# アプリケーションがあります。Mutex を使用して、アプリケーションのインスタンスを 1 つだけ実行するように制限しました。そして、これはログインフォームでのみうまく機能します。メイン フォームが表示されると、ユーザーがログイン フォームを再び開くことは制限されません。メインフォームが既に開いているとログイン画面が表示されないという解決策を探していました。
これが私のProgram.csです
[STAThread]
static void Main()
{
bool mutexCreated=true;
using (Mutex mutex = new Mutex(true, "eCS", out mutexCreated))
{
if (mutexCreated)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}
else
{
Process current = Process.GetCurrentProcess();
foreach (Process process in Process.GetProcessesByName(current.ProcessName))
{
if (process.Id != current.Id)
{
XtraMessageBox.Show("Another instance of eCS is already running.", "eCS already running", MessageBoxButtons.OK, MessageBoxIcon.Information);
SetForegroundWindow(process.MainWindowHandle);
break;
}
}
}
}
}