이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 19013|회답: 0

[출처] C#은 애플리케이션 인스턴스 중 하나만 올바르게 작성할 수 있게 합니다

[링크 복사]
게시됨 2016. 12. 10. 오후 2:35:34 | | |
C# 프로그램은 올바른 코드를 실행하는 인스턴스가 하나만 허용합니다
http://www.itsvse.com/thread-3391-1-1.html
(출처: 건축가)


아래 코드도 틀렸어요!! 위와 같은 정확한 코드입니다!!


때로는 애플리케이션의 한 인스턴스만 실행하도록 허용해야 하며, 프로세스가 시작되면 인스턴스가 실행 중임을 감지하면 자동으로 실행을 중단합니다. 보통 메인 함수에서 Mutex 뮤텍스를 통해 구현하는데, 보통 다음과 같이 작성됩니다:

답을 찾으려 할 때, 우리는 종종 Mutex의 기능과 주의사항을 무시하고 급하게 왔다 갔다 합니다. 간단한 테스트 후, 좋아요, 가져가서 사용하세요. 이 시점에서 중요한 전제 조건을 간과합니다:뮤텍스 명명 규칙. 위의 작성 방법은 단일 사용자에서도 문제없이 작동합니다; 멀티 유저에서는 각 사용자가 하나의 인스턴스를 시작할 수 있으므로 단일 인스턴스를 보장할 수 없습니다.

터미널 서버에서 한 인스턴스만 허용해야 한다면, 다음 방법을 사용하세요:


다음은 MSDN의 설명입니다:


터미널 서비스를 실행하는 서버에서는 명명된 시스템 뮤텍스가 두 가지 가시성을 가질 수 있습니다. 이름이 접두사 "Global\"로 시작하면 뮤텍스가 모든 터미널 서버 세션에서 볼 수 있습니다. 이름이 접두사 "Local\"로 시작하면, 뮤텍스는 그것을 생성한 터미널 서버 세션에서만 볼 수 있습니다. 이 경우, 서버 내 다른 터미널 서버 세션은 같은 이름을 가진 별도의 뮤텍스를 가질 수 있습니다. 접두사를 지정하지 않고 이름 뮤텍스를 만들면, "Local\" 접두사를 받게 됩니다. 터미널 서버 세션에서는 이름이 다른 두 뮤텍스가 독립적인 뮤텍스이며, 이 두 뮤텍스는 터미널 서버 세션 내 모든 프로세스가 볼 수 있습니다. 즉, 접두사 이름인 "Global"과 "Local"은 프로세스가 아닌 터미널 서버 세션에 대한 뮤텍스 이름의 범위를 나타냅니다.






이전의:COM 상호운용을 위한 컴포넌트 등록이 회색으로 표시되어 있습니다
다음:C# 프로그램은 올바른 코드를 실행하는 인스턴스가 하나만 허용합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com