SendKeys在我的c#应用程序中不工作/被阻止

SendKeys在我的c#应用程序中不工作/被阻止,c#,if-statement,sendkeys,C#,If Statement,Sendkeys,我的代码中有一个if语句,其中包含一个shutdownProcess()方法(它使用许多SendKeys.Send调用),单独在if语句中使用时效果非常好: if (waitForRegressionTestToComplete.WaitOne(10*60*1000)) { shutdownProcess(); } 正如我所说,这正是我所希望的。SendKeys.Send正常工作,进程关闭。但是,当我向if语句中添

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

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;
                        }
                    }
                }
线程在“发送”所有密钥后似乎也会冻结,因为它正在等待进程退出——但没有结果。
提前感谢你的帮助。我完全被难住了。

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


SendKeys.SendWait(“{TAB}”)而不是
SendKeys.Send(“{TAB}”)

您是否尝试过使用Sendkeys.SendWait?我没有。让我试着快速实现它。这个描述看起来很有用。