문제

와 연관되다 이 질문, Mutex의 이름 지정에 대한 모범 사례는 무엇입니까? 이것이 OS와 버전 (Windows 용 ESP)에 따라 다를 수 있으므로 답변에 플랫폼을 지정하십시오. 저의 관심은 XP와 Vista의 승리입니다.

도움이 되었습니까?

해결책

글로벌 뮤텍스의 정말 안전한 이름은입니다 <a description> + <a GUID>:

MyApp Single Instance Mutex : {c96f7db4-d743-4718-bef0-8533a198bcca}

이와 같은 이름을 사용하면 다른 사람이 Mutex와 동일한 뮤트 이름을 사용할 가능성이 전혀 없습니다.

프로세스 탐색기와 함께 스니핑하면 몇 곳에서 안내가 사용되지만 일반적으로 사용되지는 않습니다. 그래도 나오는 패턴은 "뮤텍스"라는 단어가 상당히 많이 사용되며 Microsoft는 국회 의사당을 사용하는 것을 좋아한다는 것입니다.

다른 팁

제안:

객체 유형 (이 경우 MUTEX)과 응용 프로그램 네임 스페이스를 고유 이름에 통합하십시오. 이것은 일반적으로 안전합니다. 정말로 안전하고 싶다면 안내를 추가하십시오.

예시:

    string mutexName = "MUTEX: Skyz.Messaging.ThreadPooling.MyAppSingleInstance";

장점 :

앱에 대한 명명 컨벤션을 작성하면 많은 객체 이름을 쉽게 관리하고 읽을 수있는 코드를 만들 수 있으며 기존 및 미래 개발자가 코드를 쉽게 이해할 수 있습니다.

팁:

코드에서 Mutex를 직접 사용하는 대신 구현을 변경하거나 조정을 추가하려는 경우 코드를 더욱 유지 관리 할 수있는 재사용 가능한 래퍼 클래스를 작성하십시오. 일회용 패턴을 사용하여 뮤텍스를 제거하거나 문제가 발생합니다!

using (SingletonProcess singletonProcess = new SingletonProcess("MUTEX: Skyz.Apps.MessagingQueue.InstanceMarker"))
        {
            if (singletonProcess.IsDuplicateInstance)
            {
                ConsoleWriter.WriteColorLine("An instance of the ExporterService exists, you cannot start a second instance.");
return  


            }

당신이 보호하는 것에 대한 설명을 "가드"라는 단어와 결합 할 수 있습니다.

CreateMutex 샘플의 Google 검색에 따르면 "MyMutex"가 선택된 가장 일반적인 뮤트 이름이라는 것이 밝혀졌습니다.

따라서 독창성을 보장하기 위해 Mutx "Notmymutex"의 이름을 지정해야합니다.

나는 과거에 Guid 's를 사용하지 않았지만 다른 소프트웨어로 작업하는 세계의 모든 개발자에 대해 생각한다면 좋은 생각을 생각하기 시작했습니다.

당신이 확신 할 수있는 매우 모호한 이름을 생각하지 않는 한, Guid에 대해 생각해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top