Tweet
たいがいのソフトには入れておきたい多重起動防止機能です。
Visual StudioでもC++BuilderでもMutexが一般的でGetProcessでプロセス名取る場合もあります。
VB.NETだとプロジェクトのプロパティにある「アプリケーション」タブで
「アプリケーションフレームワークを有効にする」にチェックを入れ、有効にする。
その後「Windowsアプリケーションフレームワークプロパティ」の「単一インスタンスのアプリケーションを作成する」にチェックを入れるだけで実現できてしまいます。
超簡単
でも同じ.NETアプリのC#はやはりMutexを使わないといけない。
基本的には
System.Threading.Mutex
を使うんだけれども.NETアプリではGC(ガベージコレクション)があるからどうするか悩んでました。
ここのところC#でnewする場合には必ずusingを使うようにしていますが、
Mutexのときはどうするんだ?
GC.KeepAlive(mutex)
とか使ってGC対象からはずすのかと思ってましたが、
以下のサイトで解決しました。
using内にいれてるんだからGC対象とか考える必要ないのか
勉強になりました
・GC と Mutex
http://d.hatena.ne.jp/shiba-yan/20080323/1206200110