2017-12-20 12 views
1

내가 응용 프로그램 Test_A을 실행하는거야이 하나에서이 코드로 Test_B라는 다른 응용 프로그램을 시작 해요 : 나는 '종료 Test_B 기다리고 Test_A에서Process.Start를()와 다른 응용 프로그램을 실행

Test_B.StartInfo.CreateNoWindow = True 
Test_B.StartInfo.UseShellExecute = False 
Test_B.StartInfo.FileName = "App_Test_B.exe" 
Test_B.Start() 

을 이 Sleep(100)Test_B 응용 프로그램에 영향을 미치지 않거나 Test_A에 적용 할 경우,

Do Until Test_B.HasExited = True 
    Application.DoEvents() 
    System.Threading.Thread.Sleep(100) 
Loop 

내 질문은 :이 루프를 실행하는거야?

+2

B. 할 일 없음 부작용 대신 Process.Exited 이벤트를 선호한다. –

답변

2

Test_ATest_B은 모두 독립적 인 프로세스이다. 어떤 종류의 Interprocess Communication을 통해 Test_B과 명시 적으로 통신하지 않는 한 에서 계속되는 것은 Test_B에 영향을 미치지 않습니다.

그런데이 루프는 프로세스가 끝나기를 기다리는 좋은 방법이 아닙니다. 대신 프로세스가 종료 될 때 발생하는 Process.Exited event을 사용해야합니다. 코드의 다른 부분에서

Test_B.StartInfo.CreateNoWindow = True 
Test_B.StartInfo.UseShellExecute = False 
Test_B.StartInfo.FileName = "App_Test_B.exe" 
Test_B.EnableRaisingEvents = True 

AddHandler Test_B.Exited, AddressOf TestB_Exited 

Test_B.Start() 

는 :

Private Sub TestB_Exited(sender As Object, e As EventArgs) 
    'Do something when Test_B has exited. 
End Sub 
+0

좋은 정보. 고맙습니다. – IGM

+0

@IGM : 기꺼이 도와 드리겠습니다. Stack Overflow에 오신 것을 환영합니다! 내 대답이 문제를 해결 한 경우 내 게시물 왼쪽에있는 ** 체크/체크 표시 **를 눌러 ** 수락 **으로 표시하십시오. 자세한 내용은 다음을 참조하십시오. [대답 수락 방법은 무엇입니까?] (https://meta.stackexchange.com/a/5235) –