C#でMutexを使って多重起動を防止する | 現役SEが最新ITネタを分かりやすく伝えるブログ

現役SEが最新ITネタを分かりやすく伝えるブログ

好奇心旺盛なうどん大好きITエンジニア。
フットサル,けん玉,クライミング,新日本プロレスが趣味。
AI と データ分析 界隈が大好き。
本屋には毎日行く。

Twitter:@waka21

マイ本棚:http://booklog.jp/users/wakagasira/front


たいがいのソフトには入れておきたい多重起動防止機能です。
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