C#中高精度計時器Stopwatch的用法詳解
引言
偶然發(fā)現(xiàn)C# 的計時器類Stopwatch,他特別適合測量運行時間,使用簡單、計時精確。它源于命名空間System.Diagnostics,使用時必須using引用。
經(jīng)典舉例
下面用一秒延時的實例來創(chuàng)建一個最簡單的實例。
(1)啟動和停止方法實例
//按鍵單擊 private void button_watch_Click(object sender, EventArgs e) { Console.WriteLine("action_spent_time:" + watch(action)); } //模擬用戶函數(shù)耗時 private void action() { Thread.Sleep(1000); } //開始和停止定時器 public static double watch(Action action) { //實例化 Stopwatch stopWatch = new Stopwatch(); //啟動定時器 stopWatch.Start(); //用戶任務(wù) action(); //停止定時器 stopWatch.Stop(); //返回計時器時間 return stopWatch.Elapsed.TotalMilliseconds; }
打印顯示
action_spent_time:1014.7956
(2)復(fù)位和重啟方法實例
//按鍵單擊 private void button_watch_Click(object sender, EventArgs e) { watchResetAndRestart(action); } //模擬用戶函數(shù)耗時 private void action() { Thread.Sleep(1000); } //復(fù)位和重啟計時器時器 public void watchResetAndRestart(Action action) { //實例化 Stopwatch stopWatch = new Stopwatch(); //啟動定時器 stopWatch.Start(); //用戶任務(wù) action(); Console.WriteLine("action:"+ stopWatch.Elapsed.TotalMilliseconds); //復(fù)位定時器 stopWatch.Reset(); Console.WriteLine("action reset:" + stopWatch.Elapsed.TotalMilliseconds); //重啟定時器 stopWatch.Restart(); //用戶任務(wù) action(); Console.WriteLine("action Restart:" + stopWatch.Elapsed.TotalMilliseconds); //復(fù)位定時器 stopWatch.Reset(); } }
打印顯示:
action:1000.8485
action reset:0
action Restart:1009.2571
小結(jié)
是不是覺得很簡單。小伙伴們可以用起來。
1、實例中可以看到精度可以得到0.1微秒使用double類型,我認為算精度很高的吧,不需要這么高精度可以做運算舍去,或者使用其它的更低精度的屬性,如stopWatch.ElapsedMilliseconds等。
2、復(fù)位reset()和停止Stop()的功能都停止了計時器,但是reset,將時間復(fù)位為0了,這里注意一下就好。
到此這篇關(guān)于C#中高精度計時器Stopwatch的用法詳解的文章就介紹到這了,更多相關(guān)C# Stopwatch內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#/VB.NET實現(xiàn)在Word文檔中添加頁眉和頁腳
頁眉位于文檔中每個頁面的頂部區(qū)域,常用于顯示文檔的附加信息;頁腳位于文檔中每個頁面的底部的區(qū)域,常用于顯示文檔的附加信息。今天這篇文章就將為大家展示如何以編程的方式在在?Word?文檔中添加頁眉和頁腳2023-03-03C#中foreach循環(huán)對比for循環(huán)的優(yōu)勢和劣勢
循環(huán)語句是編程的基本語句,在C#中除了沿用C語言的循環(huán)語句外,還提供了foreach語句來實現(xiàn)循環(huán),下面這篇文章主要給大家介紹了關(guān)于C#中foreach循環(huán)對比for循環(huán)的優(yōu)勢和劣勢,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09C#中將字符串轉(zhuǎn)換為整型的三種解決方法總結(jié)
本篇文章是對C#中將字符串轉(zhuǎn)換為整型的三種解決方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06C#?委托與?Lambda?表達式轉(zhuǎn)換機制及弱事件模式下的生命周期詳解
本文介紹了C#委托和Lambda表達式的工作原理,包括委托的內(nèi)部結(jié)構(gòu)、Lambda表達式的轉(zhuǎn)換機制以及弱事件模式下的生命周期管理,感興趣的朋友一起看看吧2025-02-02