System.Diagnostics.Stopwatch
注意:此類在 .NET Framework 2.0 版中是新增的。MSDN
Stopwatch 例項可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。在典型的 Stopwatch 方案中,先呼叫 Start 方法,然後呼叫 Stop 方法,最後使用 Elapsed 屬性檢查執行時間。
Stopwatch 例項或者在執行,或者已停止;使用 IsRunning 可以確定 Stopwatch 的當前狀態。使用 Start 可以開始測量執行時間;使用 Stop 可以停止測量執行時間。通過屬性 Elapsed、ElapsedMilliseconds 或ElapsedTicks 查詢執行時間值。當例項正在執行或已停止時,可以查詢執行時間屬性。執行時間屬性在 Stopwatch 執行期間穩固遞增;在該例項停止時保持不變。
預設情況下,Stopwatch 例項的執行時間值相當於所有測量的時間間隔的總和。每次呼叫 Start 時開始累計執行時間計數;每次呼叫 Stop 時結束當前時間間隔測量,並凍結累計執行時間值。使用 Reset 方法可以清除現有 Stopwatch 例項中的累計執行時間。
Stopwatch 在基礎計時器機制中對計時器的刻度進行計數,從而測量執行時間。如果安裝的硬體和作業系統支援高解析度效能的計數器,則 Stopwatch 類將使用該計數器來測量執行時間;否則,Stopwatch 類將使用系統計數器來測量執行時間。使用 Frequency 和 IsHighResolution 欄位可以確定實現 Stopwatch 計時的精度和解析度。
Stopwatch 類為託管程式碼內與計時有關的效能計數器的操作提供幫助。具體說來,Frequency 欄位和 GetTimestamp 方法可以用於替換非託管 Win32 API QueryPerformanceFrequency 和QueryPerformanceCounter。
using System; namespace System.Diagnostics { // 摘要: // 提供一組方法和屬性,可用於準確地測量執行時間。 public class Stopwatch { // 摘要: // 獲取以每秒計時週期數表示的計時器頻率。此欄位為只讀。 public static readonly long Frequency; // // 摘要: // 指示計時器是否基於高解析度效能計數器。此欄位為只讀。 public static readonly bool IsHighResolution; // 摘要: // 初始化 System.Diagnostics.Stopwatch 類的新例項。 public Stopwatch(); // 摘要: // 獲取當前例項測量得出的總執行時間。 // // 返回結果: // 一個只讀的 System.TimeSpan,用於表示當前例項測量得出的總執行時間。 public TimeSpan Elapsed { get; } // // 摘要: // 獲取當前例項測量得出的總執行時間(以毫秒為單位)。 // // 返回結果: // 一個只讀長整型,表示當前例項測量得出的總毫秒數。 public long ElapsedMilliseconds { get; } // // 摘要: // 獲取當前例項測量得出的總執行時間(用計時器計時週期表示)。 // // 返回結果: // 一個只讀長整型,表示當前例項測量得出的計時器計時週期的總數。 public long ElapsedTicks { get; } // // 摘要: // 獲取一個指示 System.Diagnostics.Stopwatch 計時器是否在執行的值。 // // 返回結果: // 如果 System.Diagnostics.Stopwatch 例項當前正在執行,並且在對某個時間間隔的執行時間進行測量,則該值為 true;否則為 // false。 public bool IsRunning { get; } // 摘要: // 獲取計時器機制中的當前最小時間單位數。 // // 返回結果: // 一個長整型,表示基礎計時器機制中的計時週期計數器值。 public static long GetTimestamp(); // // 摘要: // 停止時間間隔測量,並將執行時間重置為零。 public void Reset(); // // 摘要: // 停止時間間隔測量,將執行時間重置為零,然後開始測量執行時間。 public void Restart(); // // 摘要: // 開始或繼續測量某個時間間隔的執行時間。 public void Start(); // // 摘要: // 對新的 System.Diagnostics.Stopwatch 例項進行初始化,將執行時間屬性設定為零,然後開始測量執行時間。 // // 返回結果: // 剛剛開始測量執行時間的 System.Diagnostics.Stopwatch。 public static Stopwatch StartNew(); // // 摘要: // 停止測量某個時間間隔的執行時間。 public void Stop(); } }