-1

シリアル ポートが応答するまで 2 秒待ってから、値を返す必要があります。UIスレッドをロックせずにそれを達成する最良の方法は何ですか?

Test というクラスがあり、プログラムのメイン フォームでそのインスタンスを作成します。データをメイン フォームに戻し、UI を更新するためのイベント ハンドラーがいくつかあります。私の Test クラスには、2 つのループを持つ runTest というメソッドがあります。最初のループは、conTest を呼び出します。それが完了すると、2 番目が実行され、hiPotTest が呼び出されます。conTest と HiPotTest では、シリアル ポート経由でコマンドを送信してテストを開始します。私がやりたいことは、(たとえば) 2 秒待って結果を取得し、conTest と hiPotTest からそれを返すことです。私が最初に考えたのは thread.sleep でしたが、その間はおそらく UI がロックされるだろうと判断しました。それは正しいですか。そうであれば、これを回避する最善の方法は何ですか。

プログラムのこの部分は、月曜日の職場でテストすることができません。というわけで、どうなるかはあくまで推測です。

4

1 に答える 1

4

プロセスを数秒間スリープ状態にすることは、何かがおかしいという警告ベルをオフにする必要があります。現在は機能している可能性がありますが、これは製品の問題を引き起こすタイプのコードです。2 秒経っても結果が表示されない場合はどうなりますか。結果が到着したときにスレッドに通知する方がよいでしょう。また、結果が 2 秒未満で到着した場合に UI がすぐに応答できるという利点があります。

本当にやりたい場合は、バックグラウンド スレッド/タイマー (system.timers.timer) を生成し、その上でメソッドをスリープ状態にすることができます。しかし、しないでください:)

于 2013-03-30T01:49:59.243 に答える