2010-06-02 1 views
6

이미 실행중인 C# Windows Form 응용 프로그램이 명령 줄에서 명령을받을 수있게하려면 어떻게해야합니까?실행중인 .NET 응용 프로그램을 실행하는 동안 명령을 수신 할 수있게 만드는 방법은 무엇입니까?

예를 들어, 내 응용 프로그램에서 비디오를 재생중인 경우 "MyApp/stop"명령 줄에 입력하면 응용 프로그램이 실행되는 동안 현재 비디오를 종료하지 않고 비디오 재생을 중지 할 수 있습니다. 세션.

답변

2

한 가지 방법은 앱을 싱글 톤으로 만드는 것이며 다른 인스턴스가 실행될 때마다 이미 실행중인 프로세스에 인수를 전달합니다.

예 :

한 가지 방법은 (응용 프로그램 대기의 하나 개의 스레드를 만들기 위해 WaitOne (이다 http://www.codeproject.com/KB/cs/SingletonApplication.aspx

+0

이 링크는 내가 필요로하는 것과 일치하는 것으로 보인다. 고마워. – CSharpBeginner

2

이와 같은 명령을 보내면 다른 프로세스가 실행될 수 있습니다. 특정 명령 줄 인수는 실행중인 응용 프로그램의 "기본"인스턴스를 알리기 위해 일종의 IPC를 수행 할 수 있습니다.

4

귀하의 질문에 귀하의 첫 번째 프로세스가 아직 실행 중이고 두 번째 인스턴스를 시작한 것으로 보이며 그 인스턴스가 첫 번째 프로세스와 통신하기를 바랍니다.

찾고있는 것은 inter-process communication (IPC)입니다. .NET에서이 작업을 수행하는 표준 방법은 Windows Communication Foundation (WCF)을 사용하는 것입니다.

+1

IPC가 명명 된 파이프라고하는 경우가 있습니다. 여기에 꽤 좋은 연습이 있습니다 : http://omegacoder.com/?p=101 –

+0

명명 된 파이프는 IPC의 * one * 형식입니다. 이 중 일부는이 작업에 더 적합 할 수 있습니다. –

1

, 독립 실행 형 응용 프로그램 (로컬 PC에서 실행)되는 설계 구조를 변경하고 응용 프로그램을 가정하지 않고))를 호출한다 (link text).

응용 프로그램 (두 번째 인스턴스)을 시작할 때 args 인수를 통해 명령 줄을 구문 분석합니다. args [0]에 "/ stop"명령이 포함되어 있으면 명명 된 뮤텍스/세마포어를 "Release()"합니다. 그런 다음 스레드 (첫 번째 인스턴스)가 깨어나 비디오 재생을 중지합니다.

다시 말하면 (위의 모든 것을 말한 것) 더 간단한 해결책은 사용자가 클릭 할 수있는 응용 프로그램에서 STOP 버튼을 누르는 것입니다.

관련 문제