2012-03-07 7 views

답변

1

바로 가기를 두 번 클릭하면 실제로 트레이에 최소화 된 응용 프로그램에 대한 정보가없는 응용 프로그램의 다른 인스턴스가 실제로 열립니다.

기본적으로 시작할 때 다른 앱 인스턴스가 실행되고 있음을 감지하고 싶습니다. 그렇다면 앱의 기존 인스턴스에 UI가 사용자에게 표시되도록 말한 다음 종료합니다.

귀하의 솔루션은 두 가지로 구성되어 앱이 그것의 또 다른 인스턴스가 이미 실행되고 있는지 이해하는

  1. 능력.
  2. 앱이 다른 인스턴스에 "말하기"(프로세스 간 통신) 기능을 수행 할 수있는 기능.

1. 앱이 이미 다른 인스턴스가 실행 중임을 인식하는 기능.
이것은 .NET에서 간단합니다. 앱을 열면 Mutex 클래스를 사용합니다. 시스템 전반의 잠금이며, 그렇지 않은 경우에는 본질적으로 Monitor과 유사합니다.

예 :

// At app startup: 
bool createdNew; 
var mutex = new Mutex(true, Application.ProductName, out createdNew); 
if (!createdNew) 
{ 
    // Use IPC to tell the other instance of the app to show it's UI 
    // Return a value that signals for the app to quit 
} 

// At app shutdown (unless closing because we're not the first instance): 
mutex.ReleaseMutex(); 

2. 프로세스 간 통신
.NET에서 IPC을 수행하기위한 몇 가지 방법이 있습니다. WCF는 꽤 무거울지라도 하나입니다. 기본 소켓 메시징도 작동해야하는 간단한 요구 사항이지만 명명 된 파이프가 아마도 최상의 선택 일 것입니다.

여기 당신을 도와 .NET에서 적절한 IPC 방법에 대한 질문에 대한 링크입니다 : 당신은 * 딱 맞는 과정을 찾아, 프로세스 간의 통신 *하고 창을 활성화하지 않는 What is the best choice for .NET inter-process communication?

+0

.. – stuartd

+0

아 맞아. 따라서 프로세스를 반복 할 수 있다는 것을 알고 있지만 어떻게 창을 활성화할까요? –

+0

다음을 사용합니다 : https://gist.github.com/1993803 – stuartd

관련 문제