2017-12-16 2 views
0

사용자 이름, 암호 및 project_name을 매개 변수로 사용하여 프로세스를 시작하고 프로세스가 이미 실행중인 경우 같은 프로세스를 반복적으로 시작하지 않으려합니다.프로세스가 매개 변수를 허용하지 않습니까?

동일한 프로세스 실행을 반복하지 않기 위해 코드를 사용하지 않으면 프로세스에서 모든 매개 변수를 허용합니다. 개체가 생성자의 호출의 created.means 때

public SyncConnector(string username, string password, string projectname) 
    { 
     string thisprocessname = Process.GetCurrentProcess().ProcessName; 
     if (Process.GetProcesses().Count(p => p.ProcessName == thisprocessname) > 1) 
     { 
      _proc = Process.Start("doors.exe", "-u " + username + " -P " + password + " -project" + projectname); 
     } 

     while (_proc != null && !_proc.WaitForInputIdle(1000 * 60)) 
     { 
     } 
} 

이 과정 시작 : 다음은 내 코드입니다. 매개 변수를 프로세스에 성공적으로 전달하는 방법 ??? 고맙습니다 ...!

+1

질문을 다시 할 수 있을까요? 나는 당신이 기대하는 행동과 실제로 어떤 행동을하는지 완전히 이해하고 있다고 생각하지 않습니다. – souldeux

+1

조건이'> 1' 대신'<1' (또는'== 0')이되어서는 안됩니까? –

+0

hello @souldeux doors.exe가 이미 실행중인 경우 C# 프로세스를 사용하여 doors.exe 응용 프로그램을 시작하려는 경우 반복적으로 동일한 응용 프로그램을 시작하지 마십시오 – vivek

답변

1

프로세스가 이미 실행중인 경우 프로세스에 "매개 변수"를 전달할 방법이 없습니다. 런타임시 정보를 수신 할 수 있어야합니다. (웹 서비스와 같은) 소켓에서 듣거나 모니터하는 파일에서 읽거나 Windows 메시지를 통해 (오히려 구식 인!). doors.exe가 당신이 쓴 것을 가정하면, 그것은 가장 잘 작동하는 것은 당신에게 달려 있습니다.

+0

Hello Dylan, 처음 프로세스가 실행되지 않을 때 그 프로세스에 매개 변수를 전달하려고합니다. 그러나 오류가 발생합니다. 프로세스를 시작한 코드의 처음 두 행 때문에 시작되었거나 시작되지 않았습니다. – vivek

+0

다른 사람들이 지적한 것처럼이 코드의 문제점은 count가 0보다 크고 1보다 크지 않은지 확인해야한다는 것입니다. 문제를 해결하면 의도 한대로 매개 변수를 사용하여 프로세스를 시작할 수 있습니다. –

+0

카운트가 0이거나 내 경우 <1이 작동하지 않습니다. 두 접근법을 시도했지만 원하는 것을 얻지 못했습니다. – vivek

관련 문제