Mutexを使用して、1台のマシンで起動するアプリのインスタンスを1つだけ許可できることを理解しています。これは、任意の数のユーザーが使用するデスクトップの数に関係なく、実行中のプログラムのインスタンスは最大で1つであることを意味します。
さて、1つのインスタンスだけを許可するのではなく、最大で2つだけ許可したいのですが、それ以上は許可しません。どうやってするの?私はこのようなコードを試しました:
public static bool MutexChecking()
{
bool createNew1;
// one set of GUID
new Mutex(false, "54A8F2C1-6C11-4ED4-8A62-AD7C1D9F7970", out createNew1);
if (createNew1)
return true;
bool createNew2;
//another set
new Mutex(false, "5E1C76D0-9897-412B-BD56-64A872F8FDE3", out createNew2);
return createNew2;
}
上記のコードは機能します...ある種。これは、これを除いて、私がテストしたすべてのケースで機能します。
- プログラムを開きます(それを呼びましょう
p1
) - プログラムをもう一度開きます(名前を付けましょう
p2
) - 閉じます
p1
。 - プログラムを3回開きます(
p3
) - 期待:の間
p3
に、上記のメソッドはtrueを返す必要があります(であるcreateNew1
必要があるためtrue
)が、falseを返します(をcreateNew1
返すためfalse
)。
なんでそうなの?これを修正する方法はありますか?