私は自分のプログラムで唯一のミューテックスの問題に遭遇しました。これは、一度に1つのアプリケーションだけを実行できるようにするためのものです。VS15でデバッグを停止すると、ミューテックスが舞台裏で放映されますか?
私は、Visual Studio 2015でStop Debugging(shift-f5)を押すことによって、放棄されたmutex例外が発生したと考えています。これはfinallyブロックが呼び出されず、mutexが解放されなかったことを意味します。
static Mutex mutex = new Mutex(false, "APP_NAME_COMPANY");
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
if (!mutex.WaitOne(TimeSpan.FromSeconds(2), false))
{
MessageBox.Show("Application already started!", "", MessageBoxButtons.OK);
return;
}
try
{
//important things
}
finally
{
mutex.ReleaseMutex();
}
デバッグを停止することが原因だと思いますか?
実際にあなたの質問は何ですか? – dcg
@dcgデバッグを停止するとミューテックスが舞台裏で解放されますか? – Asymptote
私が見ているように、それは、ビジュアルスタジオがプロセス(アプリケーション)をどのように停止するかによって異なります。もしそれが強制的に停止するなら、私は 'mutex'が解放されたとは思っていません。もしあなたがおそらく停止するようにうまく言えば、あなたのプログラムは' mutex'を解放することができます。 – dcg