0

我的代码中有一个if语句,其中包含一个shutdownProcess()方法(它使用很多很多调用),在if语句SendKeys.Send中单独使用时效果很好:

if (waitForRegressionTestToComplete.WaitOne(10*60*1000))
            {
                shutdownProcess();
            }

正如我所说,这正是我想要的。工作正常,SendKeys.Send进程关闭。但是,当我在 if 语句中添加其他项目时,代码输入shutdownProcess()并“发送密钥”,但绝对没有结果。该方法中发送的前两个键是 ALT+TAB x2 以便在焦点丢失时重新获得焦点:

SendKeys.Send("%{TAB}");
SendKeys.Send("%{TAB}");

这是我添加新项目后的if语句,这会导致问题:

if (waitForRegressionTestToComplete.WaitOne(10*60*1000))
            {
                shutdownProcess();

                bool processIsStillRunning = true;

                while (processIsStillRunning)
                {
                    Process[] processlist = Process.GetProcesses();

                    processIsStillRunning = false;
                    foreach (Process process in processlist)
                    {
                        if (process.MainWindowTitle.Contains("Process"))
                        {
                            processIsStillRunning = true;
                        }
                    }
                }

该线程在“发送”所有密钥后似乎也冻结了,因为它正在等待进程退出 - 无济于事。在此先感谢您的帮助。我完全被难住了。

4

1 回答 1

0

正如@Jordy所说,SendKeys.SendWait这是解决问题的方法。这会等待输入被处理,从而避免在击键动作发生之前进行任何其他操作。

SendKeys.SendWait("{TAB}");代替SendKeys.Send("{TAB}");

于 2013-07-02T15:03:38.110 回答