C#的Timer是典型的好看不好用,虽然Interval的最小值可以写1,但实际精度却只能达到几十毫秒。当我们需要毫秒级的计时器的时候,就只能想别的办法了。网上可以查到很多解决办法,下面只写我用的一种,精度可至1ms.

[DllImport("winmm")]
        static extern uint timeGetTime();

[DllImport("winmm")]
        static extern void timeBeginPeriod(int t);

[DllImport("winmm")]
        static extern uint timeEndPeriod(int t);

private void  timer()
        {
            uint timerstart = timeGetTime();   
            while (true)
            {                       
                uint i = 0;         
                while (i <N)     //N为时间间隔(ms)
                {
                     i = timeGetTime() - timerstart;
                }
                timerstart = timeGetTime();
                timerfunction();               //需要循环运行的函数;           
            }          
        }

main()里添加

Thread  timerthread = new Thread(timer);

timeBeginPeriod(1);

timerthread.Start();

停止运行代码如下:

timerthread.Abort();

timeEndPeriod(1);

C#实现毫秒级计时器相关推荐

  1. c纳秒级计时器_C#中的高精度计时方法(纳秒级别计时)

    QueryPerformanceCounter获得CPU执行计数值 __int64 startTime if(QueryPerformanceCounter((LARGE_INTEGER *)& ...

  2. vue 写兼容ios的毫秒级刷新时间戳

    getNowTimer() {var rq = this.dateObject.rq;//格式是"yyyy年MM月dd日"rq = rq.replace(/年/g, "/ ...

  3. currenttimemillis 毫秒还是秒_Elasticsearch(ES)如何做到亿级数据查询毫秒级返回

    前言: 这个问题其实是更面向原理及实操方面的内容.换个问法,可以是这样来问:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 为了精简,如下内容将Elasticsearch简称为ES 如果你 ...

  4. 经典面试题:ES如何做到亿级数据查询毫秒级返回?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:8rr.co/5Csc 面试题 es 在数据量很大的情况下( ...

  5. 1.3 万亿条数据查询,知乎如何做到毫秒级响应?

    (给视学算法加星标,提升数据技能) 作者:孙晓光 http://itindex.net/ 知乎搜索后端负责人,目前承担知乎搜索后端架构设计以及工程团队的管理工作.曾多年从事私有云相关产品开发工作,关注 ...

  6. 百亿数据,毫秒级返回,如何构建?

    前言 大家好,我是坤哥,今天我想和大家聊一聊实时索引的构建之道,来自我司 PB 级索引数据的实战经验,相信对大家肯定有帮助. 近年来公司业务迅猛发展,数据量爆炸式增长,随之而来的的是海量数据查询等带来 ...

  7. Elasticsearch如何做到亿级数据查询毫秒级返回?

    https://zhuanlan.zhihu.com/p/60458049 如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有 ...

  8. mysql添加毫秒级时间

    mysql添加毫秒级时间 需求描述: mysql插入数据默认时间只到秒,如果同时插入多条数据,order by 排序,顺序有可能错乱 解决方法: 将数据插入时间粒度增加到纳秒,区分入库先后,从而达到排 ...

  9. python毫秒级时间戳

    import datetime     print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')) print(datetime.d ...

最新文章

  1. 最全 Neo4j 可视化图形数据库的工具!
  2. 进程通信学习笔记(Posix消息队列)
  3. nodejs 监控代码变动实现ftp上传
  4. docker compose 在单机环境下一键打包运行
  5. 软件工程--需求分析
  6. 成功解决ValueError: Expected 2D array, got 1D array instead: Reshape your data either using array.reshap
  7. 面试(后台开发,转载)
  8. 安装Pywin32后无法正常引用pyd文件
  9. React 学习笔记 —— Ref Hook
  10. 蓝桥杯51单片机之独立按键控制数码管【单片机开发初学者必学会】
  11. Linux下将pycharm图标添加至桌面
  12. 内存泄露valgrind
  13. 推荐微软Windows 8 Metro应用开发虚拟实验室
  14. 服务器用户配置文件在哪里找,SharePoint Server 中的服务器到服务器身份验证和用户配置文件...
  15. 十六进制计算器 android,十六进制计算器
  16. 14.STC15W408AS单片机IIC驱动OLED
  17. Word页面视图下不显示内容但web视图下可以显示的问题
  18. 上传淘宝网图片获取相似商品信息
  19. 工作笔记-thingworx连接mongdb
  20. 基于javaweb的景区旅游管理系统(java+springboot+html+layui+bootstrap+jquery+mysql)

热门文章

  1. Python环境搭建-自用
  2. numpy数组和图片互转
  3. jquery表格插件jqgrid
  4. Qt 之 中英文切换的使用
  5. ios12最后一个正式版_iOS12.4正式版怎么样 iOS12.4正式版要不要升级
  6. Matlab虚拟现实工具箱——没有VRML Editor时的使用办法(应该是Simulink 3D Animation Demo版本的都是这样)
  7. 基于STM32设计的智慧浇花系统(华为云IOT)
  8. ASO马甲包:马甲包上架注意事项
  9. 李峋爱心Python代码
  10. 二叉树的构造(前序+中序)---(后序 + 中序)