ミューテックスを使用して自分のプログラムの1つのインスタンスを強制するときに問題があります。ミューテックスを使用して強制的に1つのインスタンスを再起動するアプリケーション
私はウェブブラウザーコントロールを備えたwinformアプリケーションです。特定の条件が満たされていれば自動再スタートする必要があります。
私の問題は、アプリケーションを再起動すると、mutexは新しいインスタンスを開くことができます(これはいつも起こるとは限りません)。ブラウザにnavigateのような非同期メソッドがある可能性があります。
しかし、私はExitアプリケーションイベントでMutexをリリースします。
これは私のコードです:
static Mutex _mutex = new Mutex (false, "myprogramkey");
[STAThread]
private static void Main()
{
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
if(_mutex.WaitOne(TimeSpan.FromSeconds(5), true))
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new RevolutionForm());
}
else
{
MessageBox.Show("Error!");
}
}
static void Application_ApplicationExit(object sender, EventArgs e)
{
_mutex.ReleaseMutex();
}
ありがとうございました! – user1107078
こんにちは@Hans私はOPと同じ問題に直面しますが、私の場合、私の単一のインスタンスは 'ApplicationContext'から継承していますので、' Form'ではありません。 – meda
質問ボタンをクリックする必要があります。 –