定時器精確到毫秒並對其進行誤差測試

2021-05-27 09:47:55 字數 1376 閱讀 9444

.net裡面的system.windows.forms.timer,當設定其interval到毫秒級別(<1000)時,會出現令人咋舌的誤差,而且有兩方面會使誤差進一步拉大

1、interval設的越小,誤差越大;

2、隨著定時器工作時間的推移,誤差也越大

下面是一段demo測試**,僅供參考:

namespace mytimerdemo 

else 

label1.text = string.format("00:00::000", time.tostring("00")); 

label2.text = time.tostring("00"); 

}  ///

/// 開始/暫停  

///

private void btnstartpause_click(object sender, eventargs e) 

else //暫停 

}  ///

/// 停止定時器  

///

private void btnstop_click(object sender, eventargs e) 

:000", time.tostring("00")); 

label2.text = time.tostring("00"); 

}  private void timer1_tick(object sender, eventargs e) 

else 

}  else //正計時 

}  }  } 

namespace mytimerdemo

else

label1.text = string.format("00:00::000", time.tostring("00"));

label2.text = time.tostring("00");

}///

/// 開始/暫停

///

private void btnstartpause_click(object sender, eventargs e)

else //暫停

}///

/// 停止定時器

///

private void btnstop_click(object sender, eventargs e)

:000", time.tostring("00"));

label2.text = time.tostring("00");

}private void timer1_tick(object sender, eventargs e)

else

}else //正計時}}

}修改interval只需在建構函式進行即可

精確到1ms的定時器

settimer 設定的定時器的定時時間 50ms,這在實時資料採集中是不夠的。用多 定時器能精確到1ms,效果很好。定時器 define timer accuracy 1 int timerid uint waccuracy int inittimer int releasetimer void ...

swoole學習之毫秒定時器

常規定時器 首先想到的就是linux自帶的crontab 不過這個定時器是分鐘級別的.swoole定時器 swoole timer after after time,callback 設定乙個延時器 swoole timer clear timer id 清除指定的定時器 server on ope...

毫秒,微妙級別軟體定時器

微控制器開發中,軟體定時器是常用的工具。定時執行特定任務和延時功能,都可以用軟體定時器實現。常見的延時函式的實現做法有 1.使用空指令進行延時,通過控制空指令的執行次數,進行延時。優點 不需要占用系統外設。缺點 系統執行指定個空指令的時間不穩定,中途出現的中斷處理會嚴重影響計時的精確性。2.使用微控...