2011-03-11 84 views
0

我正在開發一個非常非常非常重要的應用程序。我想在代碼中添加一個日誌編寫器,這樣我就可以跟蹤事件並找出應用程序浪費時間的地方。但問題是,vb.net僅以15.25毫秒的時間間隔告訴時間該做什麼。儘管msdn文檔說我們可以以毫秒爲單位獲得時間。 要更好地理解我的問題,請通過以下代碼。此代碼寫在按鈕的單擊事件上,並將時間記錄在日誌文件中。 問題在於它像16,16,16那樣寫入時間,並且在dx值達到5000之後,它跳轉到31,然後跳轉到46,等等。誰能解釋一下。如何讓時間精確到毫秒級vb.net

dx = 1 
    While dx <= 100000 
     dx = dx + 1 
     SRLog1.WriteLine("dx vALUE > " & CStr(dx) & " Ticks -> " + CStr(Now.Millisecond)) 
    End While 
+1

我懷疑MSDN實際上是說你可以用*毫秒*得到時間,而不是你可以在*毫秒*的間隔得到它。 Windows不是實時操作系統。這種時間分辨率根本不可能。您有軟件和硬件限制可以阻止它。更多信息可在[我的回答這個相關的問題](http://stackoverflow.com/questions/4212611/raise-event-in-high-resolution-interval-timer/4213950#4213950)。 – 2011-03-11 08:29:48

回答

3

您可以使用Stopwatch類創建分辨率高得多的增量時鐘。例如:

Dim sw = Stopwatch.StartNew() 
    Dim start = sw.Elapsed 
    '' Do stuff 
    '' ... 
    Dim sample = sw.Elapsed 
    Console.WriteLine(sample - start) 

這仍然是不太可能制定出很好的程式碼中的代碼,增加一個整數只需不到半納秒。實際上你會測量記錄需要多長時間,這應該足夠慢以獲得不同的輸出值。

+0

謝謝,謝謝Mr.Hans Passant,它正在工作。非常感謝。 – 2011-03-14 10:23:36

1

如果您想了解應用程序的哪些部分正在等待時間,那麼您應該嘗試使用分析器。兩種可能的產品是JetBrains dotTrace和RedGates ANTS。你也應該在這裏看看this question

+0

我試過螞蟻......對我來說很難,對不起,反正thx – 2011-03-14 10:24:14