20 분마다 타이머 대리인을 통해 파일을 읽고 내용을 역 직렬화 한 다음 파일을 지우는 C# Windows 서비스 응용 프로그램을 작성했습니다. 이 파일은 동일한 컴퓨터에서 실행되는 하나 이상의 클라이언트 응용 프로그램에서 작성되며, 뮤텍스를 사용하여 파일을 직렬화 및 서비스에 의해 쓰여지는 동안 파일을 "잠그는"방법을 선택했습니다.Windows 서비스에서 C# 뮤텍스를 유지하는 중
클라이언트 응용 프로그램과 서비스가 동시에 파일에 쓰려고 시도하는 드문 경우 예외를 피하기 위해이 작업을 수행하고 있습니다.
나는 (이 20 분마다 실행) 다음과 같은 C# 코드를 통해 Windows 서비스의 내부 뮤텍스를 만들 : 나는 다음을 실행하는 클라이언트 응용 프로그램에서
public void MyServiceFunction() {
Mutex sessMutex = new Mutex(false, "sessMutex");
sessMutex.WaitOne();
// Write to the file ......
sessMutex.ReleaseMutex();
}
:
public void MyClientFunction() {
Mutex mutex = Mutex.OpenExisting("sessMutex");
mutex.WaitOne();
// Write to the file ......
mutex.ReleaseMutex();
}
이제 Windows 서비스를 시작하고 몇 분 안에 클라이언트 응용 프로그램을 실행하면 모든 것이 잘 작동합니다. 그러나 몇 시간 후 나는 다음과 같은 오류가 클라이언트 응용 프로그램을 실행하려고 할 때 :
No handle of the given name exists.
내 질문은, 내가이 발생하고 "지속"뮤텍스에서이 오류를 방지 할 방법에 대해 설명합니다.
뮤텍스를 Windows 서비스 클래스의 속성으로 저장하면됩니까? 내가 찾고있는 기능을 달성하기 위해 뮤텍스를 적절한 방법으로 사용하고 있습니까?
미리 도움 주셔서 감사합니다.
내가 볼