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

Programming プログラミング
この記事は約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
スポンサーリンク
スポンサーリンク
プログラミング
えふめん

コスパ・効率重視の大阪人。でも口数少なめ。O型だけど割とキッチリ。心穏やかに生きていきたいと日々願っている。

特技:VBAで仕事の効率化。とりあえずググる。

えふめんをフォローする
\よかったらシェアしてね/
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
俺の開発研究所

コメント

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