日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#精准定时

發布時間:2023/12/10 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#精准定时 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • StopWatch類
  • 例子1,用作延時
  • 例子2,用作算法耗時評估

  • 博主寫作不容易,孩子需要您鼓勵
  • 萬水千山總是情 , 先點個贊行不行

簡介

我們在自動化上位機編寫過程中,上位機的定時應用在很多地方。對于工業上位機程序設計起到非常關鍵的作用,比如:評估算法耗時;動作延時等等。

那我們如何實現這一功能呢?C#為我們提供了一個StopWatch定時器,我們可以借助此定時器進行定時。

有的人可能會問,為什么不用Sleep,因為這種延時方法定時精度差,并且會卡死線程與程序。最主要的是定時精度差

StopWatch類

StopWatch類定義如下:

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(); // // 摘要: // 對新的 System.Diagnostics.Stopwatch 實例進行初始化,將運行時間屬性設置為零,然后開始測量運行時間。 // // 返回結果: // 剛剛開始測量運行時間的 System.Diagnostics.Stopwatch。 public static Stopwatch StartNew(); // // 摘要: // 停止時間間隔測量,并將運行時間重置為零。 public void Reset(); // // 摘要: // 停止時間間隔測量,將運行時間重置為零,然后開始測量運行時間。 public void Restart(); // // 摘要: // 開始或繼續測量某個時間間隔的運行時間。 public void Start(); // // 摘要: // 停止測量某個時間間隔的運行時間。 public void Stop(); } }

使用StopWatch類注意問題:

1、StopWatch類在System.Diagnostics 命名空間下,在使用StopWatch的文件中要添加using System.Diagnostics;

2、常用函數: public Stopwatch();public void Reset();public void Start();public void Restart();public void Stop();

3、public void Restart();相當于public void Reset();+public void Start();

使用StopWatch定時方法:

1、定義一個StopWatch對象

Stopwatch sw = new Stopwatch();

2、開始計時

sw.Start();

3、重新設置并開始計時

sw.Restart();

4、結束計時

sw.Stop();

5、獲取運行時間[毫秒]

long times = sw.ElapsedMilliseconds;

我們在程序中可以判斷運行時間是否達到我們需要的延時時間,如果時間達到,則程序往下運行。這樣就達到定時目的。
在進行算法評估時候,我們在算法開始的時候打開定時器,程序結束時停止定時器,之后獲取定時器運行時間,即可得到算法運行時間。

Stopwatch 在基礎計時器機制中對計時器的計時周期進行計數,從而測量運行時間。 如果安裝的硬件和操作系統支持高分辨率性能計數器,則 Stopwatch 類將使用該計數器來測量運行時間; 否則,Stopwatch 類將使用系統計數器來測量運行時間。 使用 Frequency 和 IsHighResolution 字段可以確定實現 Stopwatch 計時的精度和分辨率。

例子1,用作延時

Stopwatch sw = new Stopwatch(); //開始計時 sw.Start(); //某算法 Funcation(); //判斷延時是否到達 if (sw.ElapsedMilliseconds>10) {Funcation1();//到達則運行函數1 } //否則運行函數2 elseFuncation2();//結束計時 sw.Stop();

也可以使用Switch Case進行延時操作。定時器開始后轉到下一步Case進行判斷即可。

例子2,用作算法耗時評估

Stopwatch sw = new Stopwatch(); //開始計時 sw.Start(); //某算法 Function(); //結束計時 sw.Stop(); //獲取運行時間[毫秒] long times = sw.ElapsedMilliseconds; TextBox1.Text += "執行算法總共使用了" + times + "毫秒";
  • 博主簡介:
  • 工業自動化上位機軟件工程師、機器視覺算法工程師、運動控制算法工程師。目前從業于智能制造自動化行業。 博主郵箱:2296776525@qq.com
  • 幫忙點個贊吧。哈哈。

總結

以上是生活随笔為你收集整理的C#精准定时的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。