- PR -

二重起動チェックについて

1
投稿者投稿内容
篇銀
常連さん
会議室デビュー日: 2005/06/01
投稿数: 26
投稿日時: 2006-10-11 22:43
こんにちは。篇銀です。
アドバイスを頂けないでしょうか。

【動作環境】
Microsoft Windows XP Professional
Microsoft Visula Basic 2005

【事象】
会議室でも度々話題に挙がっている二重起動チェックですが、下記のコードを利用しております。挙動不審な現象として、アプリを正常終了しているのにもかかわらず、再起動すると、二重チェックに引っ掛かってしまう場合があります。但し、再度アプリを起動すると、正常に起動します。原因がわかる方がいらっしゃいましたらご教示ください。

'二重起動チェック
If UBound(Diagnostics.Process.GetProcessesByName( _
Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
'すでに起動していると判断する
MessageBox.Show()
Exit Sub
End If
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-11 23:28
引用:

篇銀さんの書き込み (2006-10-11 22:43) より:

会議室でも度々話題に挙がっている二重起動チェックですが、下記のコードを利用しております。挙動不審な現象として、アプリを正常終了しているのにもかかわらず、再起動すると、二重チェックに引っ掛かってしまう場合があります。


このコードであれば、タイミングしだいで起こり得るでしょうね。
Mutex を利用する方法に変更すると、解決するでしょう。

ちなみに、VB8 (2005) であれば、コードを組む必要はありません。
プロジェクトのプロパティで 「単一インスタンスのアプリケーション」 が設定できます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
篇銀
常連さん
会議室デビュー日: 2005/06/01
投稿数: 26
投稿日時: 2006-10-12 10:36
じゃんぬねっとさん、こんにちは。
アドバイスをありがとうございます。
参考になりました。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-10-13 11:37
こんにちは。

ちょっと特徴的なコードだなぁと思って「UBound(Diagnostics」で検索したら、
マイクロソフトのページがひっかかりました。これを参考にされたんでしょうか。
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/Process_mutex/
ちなみに下のほうに Mutex を利用するコードも書かれていますね。というか
Mutex を利用する手段を解説するための「こういうやり方もあるんだけどね」的
な解説のようですね。

引用:

スクリプトプログラマさんの書き込み (2006-10-12 23:57) より:

バッチファイルやWSHのスクリプトの二重起動防止には、自身のファイルをAppendオープンする方法を使ったりするのですが、この手はVBなどのEXEでは使えません?


んー、この方法はむしろ「 Mutex を使えない場合の代替手段」だと思います。
上記のコードもそうですが、基本的には Mutex を使用するのが一番安全かつ
適切な方法だと思いますよ。
ちゃんとした方法が取れる環境で、わざわざ信頼性を落として別の方法を選択
する必要はないような気がします(何らかの理由があれば別ですが)。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-13 13:15
引用:

ぽぴ王子さんの書き込み (2006-10-13 11:37) より:

マイクロソフトのページがひっかかりました。これを参考にされたんでしょうか。
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/Process_mutex/


ちなみにこのコード、GC.KeepAlive メソッドの位置がおかしいです。
(なくても良いみたいですが)

という連絡を以前したのですけど、直っていないですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)