none
如何做到一段代码每隔 准确的100ms运行一次? RRS feed

  • 问题

  • 你好,我最近碰到个问题,测量温度时需要严格的每隔100ms获取数据后处理一次,我试了timer和thread,

    对间隔的处理如:Thread.Sleep(100),这样能延迟100ms,但是由于处理的代码比较多本身也需要实行1,20ms,所以每次运行时其实会间隔120ms左右,而有时候间隔中没有数据实际上又是100ms循环一次了,有没有什么方法可以固定住每隔100ms就实行这段函数?100ms包括函数自己运行的时间,

    不知道有没有理解我的意思,因为是温度测量所以对间隔的要求很准确,必须要100ms,如有这样的方法,请指教,谢谢!~

    2012年7月26日 12:29

答案

  • 老蒋你好,这么说只是和操作系统有关系?不能通过软件实现时时了?我用的是C#,以前有个同事用C++的WINAPI timeSetEvent(,貌似实现了类似需求,但是c#不知道怎么做,timeSetEvent和C#的Thread.Sleep有什么区别吗?
    • 已标记为答案 a013strife 2012年8月9日 6:05
    2012年7月28日 2:28

全部回复

  • 需要运行实时的操作系统,比如Windows CE。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月26日 21:23
    版主
  • 老蒋你好,这么说只是和操作系统有关系?不能通过软件实现时时了?我用的是C#,以前有个同事用C++的WINAPI timeSetEvent(,貌似实现了类似需求,但是c#不知道怎么做,timeSetEvent和C#的Thread.Sleep有什么区别吗?
    • 已标记为答案 a013strife 2012年8月9日 6:05
    2012年7月28日 2:28
  • 这两个都不是精确定时,windows是抢先多任务系统


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年8月9日 13:35
    版主