2014-05-09 3 views
-1

외부 exe 파일을 시작하는 C# 멀티 스레드 응용 프로그램이 있습니다. 내 발사 코드 에서이 발사 스레드는 두 번 외부 exe 파일의 두 인스턴스가 시작되고 몇 번 전화입니다. 발사 방법에 적용된 잠금 메커니즘을 없애기 위해 발사 시간 지연을 추가하십시오. while 루프에서 5 밀리 초의 시간 지연을주고 최상위 레벨에서 시간을 잘라내는 것과 같습니다. 그리고 프로세스가 발견되면 루프를 깰. 그리고 최상위 수준을 줄입니다. 그리고 최고 수준의 차단이 5 초에 도달하고 여전히 exe가 발견되지 않으면 루프를 깨뜨립니다. 다음은 제 코드입니다.while 루프의 시간 지연

int count = 1000; 
lock (locker) 
       { 
Process[] pname = Process.GetProcessesByName("MyApp"); 
if (pname.Length == 0) 
{ 
---- 
process = new System.Diagnostics.Process(); 
         process.StartInfo = psi; 
process.Start(); 

      while (true) 
      { 
       //find TG proceess 
       pname = Process.GetProcessesByName("MyApp"); 

       //if found exit from loop 
       if (pname.Length >= 1) 
       { 
        Console.WriteLine("Found"); 
        break; 
       } 
       else 
       { 
        //give 5 sec delay 
        System.Threading.Thread.Sleep(10); 
        count = count + 10; 

        if (count >=5000) 
        { 
         Console.WriteLine("Not Found"); 
         break; 
        } 
       } 
      } 
} 
} 

이 지연 시간 코드가 작동합니까? 아니면 뭔가 잘못하고있는 것입니다.

+1

나는 그 질문을 이해할 수 없었다. 뭐가 잘못 됐는지 좀 더 명확히 해 주실 수 있겠습니까? –

답변

0

나는 당신이 정확히 무엇을 성취하고자하는지 이해하는 것이 약간 어렵다고 말해야합니다.

작동 여부를 알아내는 유일한 방법은이를 실행하고 일련의 테스트 사례에 대해 테스트하는 것입니다. 생각하거나 누군가에게 그것이 예상대로 작동한다면 올바른 접근 방식이 아님을 묻습니다.

사용 사례를 충족하는 경우 다른 고려 사항 인 IMO 만 성능이어야합니다. 성능에 만족하면 (그리고 사용 사례에 따라 다르다면) 나는 그것이 좋을 것이라고 생각합니다.

희망이 도움이됩니다.