我的程序是win窗體(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,但要訣竅。 我沒有使用backgroundworker,因爲壓縮程序和extenral程序之間的同步不夠清晰。
單獨的線程 – dtsg 2012-08-09 10:14:01
Process.Start()會立即將控制權返回給您的程序。在調試器下運行它,或者添加一些Debug.WriteLine()來查看代碼停止的位置。也許WaitForInputIdle()不會返回,直到外部程序退出? – 2012-08-09 10:16:13
相關:http://stackoverflow.com/questions/2740038/how-do-i-wait-until-a-console-application-is-idle 因此,跨進程使用同步對象。 – 2012-08-09 10:19:06