« [VB.NET] 配列ソート | メイン | [ASP.NET|Access] Access に接続 »

2005年10月14日

[VB.NET] 二重起動防止

    ' アプリケーション固定名
    Private Shared strAppConstName As String = "daSampleApp"

' 二重起動を禁止するミューテックス
Private Shared mutexObject As System.Threading.Mutex

' アプリケーションのメイン・エントリ・ポイントです。
' _
Shared Sub Main()

' Windows 2000(NT 5.0)以降のみグローバル・ミューテックス利用可
Dim os As OperatingSystem = Environment.OSVersion
If ((os.Platform = PlatformID.Win32NT) And (os.Version.Major >= 5)) Then
strAppConstName = "Global\" + strAppConstName
End If

Try
' ミューテックスを生成する
mutexObject = New System.Threading.Mutex(False, strAppConstName)
Catch e As ApplicationException
' グローバル・ミューテックスによる多重起動禁止
MessageBox.Show("すでに起動しています。2つ同時には起動できません。", "多重起動禁止")
Return
End Try

' ミューテックスを取得する
If (mutexObject.WaitOne(0, False)) Then
' アプリケーションを実行
Application.Run(New Form1)

' ミューテックスを解放する
mutexObject.ReleaseMutex()
Else
' 警告を表示して終了
MessageBox.Show("すでに起動しています。2つ同時には起動できません。", "二重起動禁止")
End If

' ミューテックスを破棄する
mutexObject.Close()

End Sub

2005 / 10 / 14