문제

명령줄을 통해 실행되는 C# 앱이 있습니다.일반적으로 데이터는 add(app -a string).나는 앱의 인스턴스를 하나만 열고 싶습니다. 명령줄을 통해 더 많은 문자열이 추가되면 단일 인스턴스가 이에 대해 알고 자체적으로 업데이트되기를 바랍니다.데이터를 데이터베이스에 올바르게 넣고 실행 중인 인스턴스에 메시지를 보내거나 msg를 실행하고 데이터를 실행 중인 인스턴스에 전달한 다음 db에 넣고 자체 업데이트하도록 할 수 있습니다.

C# .NET에서는 어떻게 해야 합니까?(3.5)

도움이 되었습니까?

해결책

응용 프로그램의 첫 번째 인스턴스는 명명된 파이프를 만들어야 하며, 응용 프로그램의 후속 인스턴스는 동일한 명명된 파이프를 만드는 데 실패하고 대신 사용하기 위해 명명된 파이프를 열려고 시도해야 합니다.일단 열리면 문자열(또는 실제로 모든 데이터)이 이미 실행 중인 앱 인스턴스로 전송될 수 있습니다.그런 다음 명명된 파이프를 닫고 앱을 종료할 수 있습니다.

또는 .NET Remoting을 사용하고 위에 설명된 것과 유사한 동작으로 애플리케이션의 다른 인스턴스가 활성화할 수 있는 잘 알려진 유형을 등록할 수 있습니다.

궁극적으로 "IPC" 또는 "프로세스 간 통신"을 빠르게 검색하면 다른 대안이 열릴 수 있습니다.그러나 나는 명명된 파이프 접근 방식이 가장 명확하고 구현/확장하기 가장 쉬울 것이라고 믿습니다.

"첫 실행" 감지의 경우 다중 실행에서 실패 조건을 나타내지 않는 IPC 메커니즘을 선택한 경우 명명된 뮤텍스를 생성할 수도 있습니다(예: 데이터베이스를 데이터 공유를 위한 중개자로 사용) ).처리된 두 개는 동일한 이름을 가진 뮤텍스를 "생성"할 수 없습니다. 이는 명명된 파이프와 동일한 제약 조건입니다. 이러한 이름은 커널에 의해 관리되므로 프로세스, 세션, 데스크톱 및 윈도우 스테이션 경계에 걸쳐 있습니다.

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