2017-12-20 15 views
1

私はアプリケーションTest_Aを実行していることだし、このいずれかから、私はこのコードでTest_Bと呼ばれる別のアプリケーション始めている:私は「終了するTest_Bを待っTest_AProcess.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 

私の質問は次のとおりです。このループを実行しているmは?

+2

B.ドには何の副作用ではなくProcess.Exitedイベントを好みます。 –

答えて

2

Test_AおよびTest_Bはいずれも独立したプロセスである。 の内容は、Test_Bと明示的に通信しない限り、Test_Bとは何らかの種類のInterprocess Communicationで通信しません。

ところで、このループはプロセスが終了するのを待つ良い方法ではありません。代わりに、プロセスが終了するときに発生する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)を参照してください。 –

関連する問題