0

我的程序是赢形式(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,但做的伎俩。我没有使用后台工作程序,因为结局上传外部程序和我的代码之间的同步不够清晰。

4

2 回答 2

1

也许您的程序永远不会空闲 - 意味着runttk.WaitForInputIdle()==true让您的应用程序等到您关闭它。

添加限制(例如runttk.WaitForInputIdle(500)==true)应该满足您的需求。

于 2012-08-09T10:16:51.247 回答
1

尝试您的代码,但使用另一个程序(如 notepad.exe),记事本运行,然后控制权下降到您调用 PringJpg 的位置。

所以我认为问题是它阻塞了 if (runttk.WaitForInputIdle()==true),请尝试为此操作添加超时。

于 2012-08-09T10:20:55.003 回答