코드의 동기화 블록)에서 호출 하였다개체 동기화 방법은 다음 코드 Mutex.ReleaseMutex에 ("코드의 동기화 블록에서 호출 된 객체 동기화 방법"I 메시지와 생산 예외가 나타날
Mutex Mutex
{
get { return mutex ?? (mutex = new Mutex(false, mutexName)); }
}
[NonSerialized]
Mutex mutex;
public void Log(/*...*/)
{
Mutex.WaitOne();
try
{
/*...*/
}
finally
{
Mutex.ReleaseMutex();
}
}
서로 다른 mutextName을 가진 뮤텍스를 사용할 수있는 여러 프로세스가있을 수 있습니다. 그리고 아직도 그 예외가 어떻게 일어날 지 모르겠습니다.
실제로 의심되는 있지만 단일 프로세스 내에서 일부 경쟁 조건의 Mutex.WaitOne() 및 Mutex.ReleaseMutext() bacause 다른 뮤텍스 인스턴스 때문에 수도 있습니다 용의자. –
뮤텍스를 만드는 것은 처음부터 스레드 안전하지 않습니다. 결국 하나 이상의 뮤텍스가 생길 수 있습니다. – vcsjones
예, 추가 호출에 대한 호출이 이루어집니다. –