0

私のコードには、if ステートメントで単独で使用すると完全に正常に動作するメソッド(shutdownProcess()非常に多くの呼び出しを使用する) を含むifステートメントがあります。SendKeys.Send

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

私が言ったように、これはまさに私が望むように機能します。正常SendKeys.Sendに動作し、プロセスがシャットダウンします。ただし、他の項目を if ステートメントに追加すると、コードが入力さshutdownProcess()れて「キーが送信されます」が、結果はまったくありません。メソッドで送信される最初の 2 つのキーは、失われた場合にフォーカスを取り戻すための 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 に答える