2011-07-30 43 views
1

我需要計時WPF窗口中兩個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

@ Jim Mischel - 我會放棄這個,謝謝。或者,我懷疑我可以通過查看'MouseHoverTime'設置爲0時'MouseHover'事件發生的速度來確定GUI監聽器的速率。 –