- カテゴリー.NETプログラミング
超簡単かつエレガントにアプリケーションの多重起動を防止する方法を記載します。
多重起動の禁止について
次の項目から以下3つの方法を簡単に記載していますが、
最後の「Visual Studioの機能を使う」だけ参照してください。
書いておいて言うのもなんですが、それ以外の方法を考えること自体時間の無駄です。
・「プロセス名で排他する」
・「MUTEXを使う」
・「Visual Studioの機能を使う」
プロセス名で排他する
自分と同じプロセス名のアプリが実行されていないかチェックする方法です。
この方法は楽ではありますが不完全すぎます。
Win32APIのFindWindowでやるのとあまりかわりがありません。
|
MUTEXを使う
MUTEXという、アクセス排他、同期制御機能を使用する方法です。
しちめんどくさく、以下理由により正直やってられません。
(とはいえまじめに開発する場合は使えます)
1.スタートアップをSub Mainとしなければならない。
なぜならMutexを開放するのは同期ブロック内でしか行えないから。
よってForm_Closedなどでは開放できない。
2.Mutexのやばさを知らずに気軽に使うのは怖すぎる。
こんなものを気軽なアプリを作る場合に使いたくない。
|
Visual Studioの機能を使う
実はVisual Studioの設定だけで多重起動を禁止できます。
ただしVisual Studio 2005以降でしか使えません。画像は2008 Professionalです。
設定方法は以下。
1.[ソリューションエクスプローラ] から プロジェクト名を右クリックして、[プロパティ] を選択。
2.[単一インスタンスのアプリケーションを作成する(M)] にチェックを入れる。
3.完了。ちょーかんたん。
ただし、Visual Studioからの起動(RUN)時は、他にアプリを実行していても起動できる模様。