起動させることが出来ます。動けば十分なものや、中には複数動くと困るような場面が出てくることもあって。そんなときに気にする必要が出てくるのが、今回の二重起動のお話しです。番目に起動することとなったアプリケーションが、既に起動されているものを検出することが出来ればいい感じになります。起動されていることが分かったら自分自身は終了してあげれば、二重起動を防止することが可能です。それを実現する仕組みはいくつか用意されていて、簡単に利用することも出来るようになってはいるのですが、理想を形にするためには機能不足なところもあったりして、いろいろなことを試してみることとなりましたので、それについて記してみようと思います。いう機能を利用する方法です。略で、複数のスレッドが共有リソースへアクセスするような場合に排他的にそれらを利用する手助けをするための機能です。これは単純に、指定した名前を要求すると既にそれが要求されているかを知ることができるといった程度の仕組みではありますけど、プロセスを越えて状況判断を行うためには非常に手軽で便利です。アプリケーションの多重起動防止のプログラムを組んでみようと思います。クラスを利用して二重起動を阻止する場合、次のメソッドを使って制御する感じになるようです。Mutexコンストラクタを使ってインスタンスを生成します。所有権を取得したり、他で所有権が取得されていることを知るために使用します。場合、複数回呼び出してその数だけ所有権を所持することも可能だそうです。呼び出す必要があるそうです。Mutex.Closeインスタンスが保持している所有権を全て解放します。クラス内にて、これらを組み込んでゆくことで二重起動の阻止が図れます。関数を調整してみると、次のような感じになります。インスタンスを生成します。メソッドを使って、所有権を得ます。ミリ秒を指定して、所有権が取得できなくても待ちません。所有権を得られた場合には、アプリケーションの実行手続きに入ります。メソッドで所有権を取得できなかった場合の処理です。MessageBox.Show("アプリケーションは既に起動しています。インスタンスを完全に解放しておきます。多重起動を阻止したときに、既に起動されているアプリケーションを前面に表示させてから重複した自分自身を終了させることも、少し工夫をすることで可能です。そのようにすることで、アプリケーションが最小化されて既に実行されたりしている場面などにでも、利用者がすぐに操作できるようになるので親切です。アクセスするためのクラスを作成しておきます。利用するために必要です。アクセスするための静的クラスです。定数を列挙型にしたものです。