2011-07-30 9 views
1

WPFウィンドウ内の2つのGUIイベントの間隔、具体的には、Button_ClickイベントとCanvas_MouseLeftButtonDownイベントの間の時間を計測する必要があります。私はこの間隔を測定するためにSystem.Diagnostics.Stopwatchへの呼び出しを使用しています。ストップウォッチクラスは内部的に非常に正確ですが(DateTime.Nowのような低解像度の選択肢とは対照的に)、私は、GUIによって生成されたイベントと、フレームレートの逆数の順で比較的大きな細分性があると想定していますしかし、非常に速いクリック(私が管理できる最高のものは明らかに50ミリ秒でした)では、仮想のGUIイベント遅延が重要になる可能性があります。エラーバーと重要な数字を設定するために、この粒度は何ですか?WPFウィンドウでのユーザーのやりとりを正確にタイミングする

答えて

1

SendInputを使用してマウスクリックをGUIに送信するようなものを設定できます。何かのように:あなたのイベントハンドラで

Initialize manual reset event 
Start stopwatch_1 
Send mouse click 
wait for event 
Get elapsed time of stopwatch_1 

:基本的に

Get elapsed time of stopwatch_1 
set event 

は、ボタンをクリックしてテストを開始し、あなたがボタンの上にマウスを置くことができるように、数秒の遅延していることあなたはクリックしたいと思う。

イベントハンドラで時刻を読み取ると、クリックが受信されてから実行されるハンドラまでの待ち時間がわかります。最後の読み込みは、イベントハンドラが何もしないので、総オーバーヘッドでなければならない合計経過時間です。イベントを処理するために必要な時間はマイナス。

GUIスレッドで待機したくないことに注意してください。 SendInputというメソッドを別のスレッドで実行する必要があります。

+0

@ジム・ミッシェル - 私はこれを行って、感謝します。あるいは、私は、 'MouseHoverTime'が0に設定されたときに' MouseHover'イベントがどのくらい速く発生するかを調べることによって、GUIリスナのレートを調べることもできると考えています。 –

関連する問題