すべてのテストが実行されるまで、複数のテストを実行するテストエンジンがあります。
各テストオブジェクトには、Execute
andResume
メソッドがあります。これらのメソッドはステータスを返します。
- COMポートからの応答を待っています
- ユーザーからのボタンクリックを待っています
- テストが完了しました。
GUIで、ユーザーはボタンをクリックしてテストエンジンを起動します。つまり、ボタンのクリックイベントは、テストエンジンのstartメソッドを呼び出します。
次に、テストはCOMポートを介してメッセージを送信する場合があり、COMポートからメッセージを受信するまで中断する必要があります。COMポート割り込みでメッセージを処理してから、テストエンジンのresumeメソッドを呼び出します。
テストには、ユーザーからの情報が必要な場合があります。この場合、テストはテキストボックスにメッセージを表示してから、戻ります。ボタンのクリックイベントハンドラーは、テストエンジンのresumeメソッドを呼び出します。
これは正常に機能しますが、COMポートを介してメッセージを繰り返し送信し、応答を受信するテストを行う必要がある場合を除きます。このループは、GUIのボタンをクリックすることによってのみ終了します。
COMポートの割り込みハンドラーがGUIとは異なるスレッドで実行されることを学びました。テストは、デリゲートを使用してGUIメソッドを実行します。
COMポートメッセージを待っている間に、テストエンジンにボタンのクリックをチェックさせるにはどうすればよいですか?テストエンジンは、メッセージシステムの同期を維持するために、COMポートメッセージを受信した後にボタンのクリックをチェックする必要があります。
注:
COMポートから受信したメッセージ用のセマフォと停止ボタン用の別のセマフォを使用して、テストエンジンをワーカースレッドで実行することを考えていました。テストエンジンは、メッセージセマフォを保留し、ウェイクアップしてメッセージを処理してから、停止ボタンのセマフォをチェックします 。
Windows7のVisual2010ExpressでC#を使用する。