[VB.NET] プロセス間の排他制御

2010年7月30日

 MUTEXによるプロセス間の排他制御。MUTEX使うの10年ぶりだ…ということでメモ。

Sub Main()
    Dim _mutex As System.Threading.Mutex
    ' 取得
    _mutex = New System.Threading.Mutex(False, "LockName")
    _mutex.WaitOne()

    ' 処理
    MsgBox("処理中")

    ' 解放
    _mutex.ReleaseMutex()
    _mutex.Close()

End Sub

 今回初めて知りましたが、mutexはセッション毎にできるらしい、つまり、リモートデスクトップとローカルとでは排他できないとのこと。実際に確認してみたら、リモートデスクトップとローカルとでそれぞれ取得できました…

 セッション共通でmutexを使いたい場合は、"Global"を先頭にいれたらよいらしい。しかしmutexを作成する(New)の段階で例外(System.UnauthorizedAccessException)が出るようになるので、実際に使用する場合にはお手当てする必要がありそうです。






カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org