【发布时间】:2012-08-09 10:09:15
【问题描述】:
我的程序是 win 形式 (c#)。它应该打开一个外部程序,打印它的主窗口,然后关闭它。 通过使用 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)
{
}
}
谢谢
更新: 最终我使用了 Thread.Sleep(3000)。 Crued,但做的伎俩。 我没有使用后台工作程序,因为结局上传外部程序和我的代码之间的同步不够清晰。
【问题讨论】:
-
Process.Start() 将立即将控制权返回给您的程序。在调试器下运行它或添加一些 Debug.WriteLine() 以查看代码停止的位置。也许 WaitForInputIdle() 直到外部程序退出才返回?
-
相关:stackoverflow.com/questions/2740038/… 所以使用跨进程同步对象。
-
@Duane 你知道线程的一个很好的例子吗?我是新手。
-
BackgroundWorker 非常简单易用,你用的是winforms吗?
-
是的。谢谢,我去查一下。
标签: c# screenshot process.start