VB.NETでWindowsアプリケーションの多重起動を禁止するには、「Mutex(ミューテックス)」クラスを使用するらしい。
ミューテックスインスタンスをアプリケーション名で生成し、その所有権が取得できるかどうかでアプリケーションの多重起動となるかどうかを判定する。
実装方法は以下のように、エントリポイントとなるメインメソッドに実装する。
今回のVisual Studioのバージョンは以下です。
- Visual Studio Professional 2012
なお、エントリポイントについては、こちらの記事参照⇒VB.NETでアプリケーション起動時のフォーム・Mainメソッドを指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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 |
コメント