ミューテックスの理解が誤っていた
Mutex::WaitOne(:Integer,:boolean)を実行するたびにシグナルを取りにいこうとするもんだと思っていたけど
実際は、第1引数で指定した時間分*1シグナルを取りに行こうとするという仕様みたいだ
ソース
Public Shared Function Main(ByVal Args() As String) As Integer Dim objMutex As Mutex = New Mutex(False, Application.ProductName) If (objMutex.WaitOne(24 * 60 * 60 * 1000, False) = False) Then MessageBox.Show("待ちきれません!") Return -1 End If 'ここに処理を書く End Function
1日待ってもシグナルが取れなかった場合はメッセージ表示して落ちる
ミューテックスの詳しくはこちら
ミューテックス - Wikipedia
javaでいうとsynchronizedなんだね!知らなかったよ!
別スレッドで同じオブジェクトをいじりたい時など、同プロセス内で同期を取りたいなら
SyncLock Me '同期中の処理 End SyncLock
という風に書く
まぁ、.NETでスレッドなんて使ったことないんだけども...
*1:ミリ秒