3

Mutexes を取得して終了するスレッドがいくつかあります。

ミューテックスはメイン リポジトリに格納され、プログラムが存在するときに適切に解放されます。ただし、Mutex を割り当てたスレッドが存在する場合、Mutex は自動的に解放され、その後 AbandonedMutexException を取得します (ドキュメントによると)。

この例外を回避し、割り当てスレッドが終了した後も Mutex を使用し続けるにはどうすればよいですか? この制限がない.Netに別のより適切な同期構造がありますか。

- Mutex と同様のセマンティクスを持つクロスプロセス同期メカニズムを探しています。

4

3 に答える 3

1

EventWaitHandle が私が望むことをしているように見えます。名前を取るコンストラクターがあるため、プロセス間の同期に最適であり、この問題はありません。

于 2009-03-17T13:27:26.223 に答える
0

を受け取った後、Mutex を使用することを妨げるものは何もありませんAbandonedMutexExceptionドキュメントから:

ミューテックスの所有権を要求する次のスレッドは、データ構造の整合性を検証できる場合、この例外を処理して続行できます。

もちろん、これは、クラッシュ中にユーザー (およびスレッド) が何をしているかを知っていることを前提としています。つまり、基本的には、取得中のスレッドが終了する前にミューテックスを解放することもできます。

したがって、最終的に使用する独自のソリューションはEvenWaitHandle、ミューテックスよりも優れています。

于 2012-07-08T21:42:48.130 に答える