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

VB.NET プログラミング
この記事は約2分で読めます。

※当ブログではアフィリエイト広告を利用しています。

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をコピーしました