내 프로그램은 win forms (C#)에 있습니다. 그것은 외부 프로그램을 열고 그것의 메인 윈도우의 프린트 스크린을 만들고 그것을 닫아야합니다. Process.Start()를 사용하여 프로그램을 열 수 있지만 모든 포커스가 있고 코드가 정지되었습니다. 나 자신을 닫을 때만 양식이 계속되지만 스크린 샷에는 너무 늦습니다. 코드를 강제 실행하려면 어떻게해야합니까? Process.Start(). 내 코드를 계속 사용하십시오.
public void Runttk(string maromnum)
{
Process runttk = new Process();
runttk.StartInfo.UseShellExecute = true;
runttk.StartInfo.FileName = @"C:\\program.exe";
runttk.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
runttk.Start();
this.Focus();
try
{
if (runttk.WaitForInputIdle()==true)
{
PringJpg(maromnum);
Killttk();
}
}
catch (Exception e)
{
}
}
당신에게
UPDATE 감사합니다 eventuanlly 내가 사용했습니다에 Thread.sleep (3000). Crued하지만 속임수를하십시오. 필자는 피날레 프로그램과 extenral 프로그램 사이의 동기화와 내 코드가 충분히 명확하지 않았기 때문에 배경 작업자를 사용하지 않았습니다.
분리 된 스레드 – dtsg
Process.Start() 프로그램에 즉시 제어권을 반환합니다. 디버거에서 실행하거나 Debug.WriteLine()을 추가하여 코드가 멈추는 위치를 확인하십시오. 아마도 외부 프로그램이 종료 될 때까지 WaitForInputIdle()이 반환되지 않습니다. –
Related : http://stackoverflow.com/questions/2740038/how-do-i-wait-until-a-console-application-is-idle 그래서 여러 프로세스에서 동기화 개체를 사용하십시오. –