タイトル | : APLの多重起動のチェック方法について |
記事No | : 328 |
投稿日 | : 2003/07/29(Tue) 16:03 |
投稿者 | : しんじ |
[OSのVer]:Windows2000 [VBのVer]:VS.NET
お世話になっております。 アプリケーションの重複起動を阻止する為以下のコードを記載したのですが、 エラーが返ってきてしまいます。 悩んだ挙句、何故エラーが返ってくるか理由が分かりません。 環境かな?と思いWin98などのPCにインストールをしてみても試しても変わりません。 どうしようも無く、Mutexを使用したところMutexでは正常に判定できるのですがスッキリしません。 大変お手数ですが、下記のコードが何故エラーになるのかご教授頂けないでしょうか? また、MutexとProcessのどちらで判定させる方が良いのかも教えて頂ければ大変ありがたいです。
Processクラスを使ってエラーとなるコード: If UBound(Diagnostics.Process.GetProcessesByName( _ Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then 'すでに起動していると判断する MsgBox("重複起動はできません。", MsgBoxStyle.Information) Exit Sub End If
返ってくるエラー: 'System.InvalidOperationException' のハンドルされていない例外が system.dll で発生しました。 追加情報 : プロセス パフォーマンス カウンタは無効にされているため、要求された情報を実行でき ませ ん。
Mutexのコードを使って正常に判定できるコード: Dim createdNew As Boolean Dim m As New System.Threading.Mutex(True, "Name", createdNew) '--Nameは任意指定
If createdNew = False Then 'ミューテックスの初期所有権が付与されなかったときはすでに起動していると判断する MsgBox("重複起動はできません。", MsgBoxStyle.Information) '終了するコード Exit Sub End If
|