- - PR -
asp.net(VB) エラー:ミューテックスの解放について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-03-05 08:29
msuk様お疲れ様です。
私がエラーを出したケースは、 本来例1のようにあるべきでした。 例1 AがMutex("NAME")を作成(所有権) BがMutex("NAME")を作成する BがWaitOneで所有権を取得待ち AがRelaceMutexを行い所有権を開放 Bが所有権を獲得 BがRelaceMutexを行い所有権を開放 それをAが処理を行っていた場合Bは今回の処理を見送るという変更を加えました。 例2 AがMutex("NAME")を作成(所有権) BがMutex("NAME")を作成する Bが作成したMutexには所有権がないためRelaceMutexを行いBを破棄 AがRelaceMutexを行い所有権を開放 例2の変更をした時点で、前回報告させていただいたエラーが発生しました。 イメージとしてはAが持っている所有権をBが開放しようとして発生していると考え例3のようにしました。 例3 AがMutex("NAME")を作成(所有権) BがMutex("NAME")を作成する Bが作成したMutexには所有権がないためRelaceMutexを行わない AがRelaceMutexを行い所有権を開放 私の場合は上記のような例でした、参考になれば幸いです。 |
|
投稿日時: 2009-03-05 10:23
開発環境を削除しても、新規Webサイト(別のソリューションですよね?)でも
Mutexの問題が継続して発生するというのは不思議な感じですね。 最初の投稿の書きぶりから、開発中のプロジェクトでMutexを使っているわけではないと解釈しているんですが、その認識はあってますでしょうか? |
|
投稿日時: 2009-03-05 13:32
>開発環境を削除しても、新規Webサイト(別のソリューションですよね?)でも
Mutexの問題が継続して発生するというのは不思議な感じですね。 最初の投稿の書きぶりから、開発中のプロジェクトでMutexを使っているわけではないと解釈しているんですが、その認識はあってますでしょうか? 私も同感です。 ただ、Mutex名称はコンピュータないでユニークが保障されていないことが原因なのではないでしょうか? msuk様のコンピュータ内で同じMutex名が使用されている場合は発生することがあるかもしれません。 |
|
投稿日時: 2009-03-05 13:54
開発中プロジェクトでmutexを使用していないと思い込んでいましたが、検索してみたら
使っていました!(途中まで違う方が開発されていましたので気づきませんでした) すみませんでした。エラーが出た時点で確認するべきでした。。 惑わせてしまった方々、申し訳ございませんでした。 Protected Shared Sub Main() Dim hMutex As New System.Threading.Mutex(False, Application.ProductName) If hMutex.WaitOne(0, False) = True Then GC.KeepAlive(hMutex) Application.Run(New Form) Else Application.Exit() End If hMutex.Close() End Sub というソースがありました。 ちなみに落としてきたプロジェクトでは使用していないようです。 |