C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■96874 / )  Re[3]: 単一インスタンスのアプリケーションを作成するを一時的に無効化
□投稿者/ コング (2回)-(2021/02/21(Sun) 11:23:26)
ありがとうございます。

これって
[単一インスタンスのアプリケーションを作成する]
を無効化した上で、


Private Sub Form0_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Dim mutexName As String = "MyApplicationName"
'Mutex名の先頭に「Global\」を付けて、Global Mutexにする
mutexName = "Global\" & mutexName
'すべてのユーザーにフルコントロールを許可するMutexSecurityを作成する
Dim rule As New System.Security.AccessControl.MutexAccessRule(
New System.Security.Principal.SecurityIdentifier(
System.Security.Principal.WellKnownSidType.WorldSid, Nothing),
System.Security.AccessControl.MutexRights.FullControl,
System.Security.AccessControl.AccessControlType.Allow)

Dim mutexSecurity As New System.Security.AccessControl.MutexSecurity()
mutexSecurity.AddAccessRule(rule)
'Mutexオブジェクトを作成する
Dim createdNew As Boolean



' 初期所有権は与えず、名前付きミューテックスを作成
Using mutex As New System.Threading.Mutex(False, mutexName, createdNew, mutexSecurity)
' ミューテックスに入る
' (すでに他のプロセスがミューテックスの排他区間に入っている場合でも、待機せず即座に処理を返す)
If mutex.WaitOne(0, False) = False Then
' ミューテックスに入った
' (このプロセス以外にミューテックスの排他区間に入っているプロセスはない)



Environment.Exit(0)



End If
End Using

End Sub



のようにして使うのですよね??

なぜか多重にプログラムを起動できてしまうのですが
何が間違っていますでしょうか??

返信 編集キー/


管理者用

- Child Tree -