VB.NETでMutex(ミューテックス)による多重起動を禁止する方法

Programming プログラミング

VB.NETでWindowsアプリケーションの多重起動を禁止するには、「Mutex(ミューテックス)」クラスを使用するらしい。

ミューテックスインスタンスをアプリケーション名で生成し、その所有権が取得できるかどうかでアプリケーションの多重起動となるかどうかを判定する。

実装方法は以下のように、エントリポイントとなるメインメソッドに実装する。

今回のVisual Studioのバージョンは以下です。

  • Visual Studio Professional 2012
スポンサーリンク

なお、エントリポイントについては、こちらの記事参照⇒VB.NETでアプリケーション起動時のフォーム・Mainメソッドを指定

Public Class ClsMain
    <STAThread()> _
    Shared Sub Main()
        'ミューテックスインスタンス生成
        Dim mutex As New System.Threading.Mutex(False, Application.ProductName)

        'ミューテックスの所有権を要求
        If mutex.WaitOne(0, False) Then
            '所有権が取得できた場合

            'フォームの起動
            Application.Run(New FrmTest)
        Else
            '所有権が取得できない場合(すでに起動している場合)

            'エラーメッセージ表示
            MessageBox.Show("多重起動はできません。",
                            "エラー",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error)
        End If

        'ガベージコレクションの対象から除外
        GC.KeepAlive(mutex)

        'ミューテックスオブジェクトを破棄
        mutex.Close()
    End Sub
End Class

コメント

タイトルとURLをコピーしました