2011-07-03 87 views
1

我正在C#中進行小型打字測試,其中程序要求您輸入一個單詞,然後顯示您的時間。 我正在使用c#timer類(從工具箱中拖拽一個定時器),它的Tick時間爲1ms,但它沒有給我準確的結果,所以我用StopWatch代替它,所以現在的時間是超級的準確,但問題在於,您似乎無法將事件處理程序分配給StopWatch,因此儘管我可以向用戶顯示完成該單詞的時間,但我無法在打字時顯示嗡嗡聲。 想法?C#高精度時序

回答

3

使用另一個計時器,每隔10秒左右觸發事件並輪詢秒錶值。它不會像秒錶一樣準確,因爲它會有滯後,但人類不會比十秒鐘更快地做出反應。

+0

完美工作。 – 7VoltCrayon

4

使用秒錶精確測量時間;並使用定時器定期觸發UI更新,並顯示StopWatch測量的時間。對於用戶界面,您不需要1毫秒的分辨率(屏幕更新時間可能會大於1毫秒,並且人眼無法感知更快的更新)。

嘗試更新每個40 - 100毫秒,我認爲這將是足夠的。

2

使用System.Timers.Stopwatch類,並通過檢查字段IsHighResolutionSystem.Timers.Stopwatch.IsHighResolution == true)檢查是否有高分辨率。

然後,無論何時您需要觸發某種東西,可以通過另一個定時器以儘可能最小的時間間隔觸發它,它會檢查Stopwatch的值。雖然這不會是完美的(你甚至不需要接近完美),但它會起作用。

+0

你不需要與真正的明確比較,因爲該屬性已經是一個布爾值... – Joey

+0

謝謝,對我來說工作得夠好 – 7VoltCrayon