windows程序如何实现精准定时

Windows中7种定时器(VC定时器种类及占用资源对比) VC中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作。本文详细介绍了VC中基于Windows的精确定时的七种方式,如下图所示: 图一 图像描述   方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 阅读详情
有朋友问我,“小兵以太网测试仪”这个软件,是如何控制发包频率的。
我想想,干脆写一篇文章来聊聊这个问题吧。


windows下,每当一个程序设定的定时器时间到了,windows会给程序发送一个WM_TIMER消息。
根据著名的windows编程书籍《Windows程序设计》的描述(在第8章),
我们知道,windows的定时器有如下的缺陷:


1. 精度不高
windows98大概是55ms,Windows NT大概是10ms。


2. WM_TIMER消息可能无法及时处理
WM_TIMER消息和其他消息一样,存放在正常的消息队列之中。如果程序处理其他消息,用了太长的时间,就耽误了WM_TIMER消息的处理,从效果上看就相当于定时器来晚了。


3. WM_TIMER消息可能会有遗漏




这样一来,如果一个windows程序在时间方面有苛刻的要求(例如,测试仪之类的软件),怎么办呢。
“小兵以太网测试仪”采用的是如下的笨方法。


这种方法非常简单,但也确实有效。下面是此方法的伪代码。


interval=x; //所需的时间间隔
next_do_work_time=当前时间;


while (!need_stop)
{


    do
    {   
        cur_time=当前时间;
    } while (!need_stop && cur_time<next_do_work_time);
    
    if (need_stop) break;
    
    DO_WORK();
    
    next_do_work_time+=interval;
}


需要说明的是,这种方法是很消耗CPU的 :)
豆包 Windows Server 2012 定时自动启动 Tomcat 完整教程(2种可靠方案,推荐方案一) ✅ 生产环境稳定运行,需要Tomcat随服务器开机自动启动、永不宕机✅ 单台服务器仅部署1个Tomcat实例✅ 追求最高稳定性、最低运维成本,不想手动干预http://服务器IP:8080(端口修改后对应新端口),能看到Tomcat首页即成功Tomcat安装目录/logs/catalina.out,日志末尾有即成功查看进程:任务管理器 → 详细信息,能看到java.exe进程即成功。 阅读详情

相关推荐

Windows自动备份与清理:批处理脚本+任务计划程序实战指南

数据备份是计算机系统管理中的基础安全实践,其核心原理在于通过定期复制关键数据到独立存储介质,防止因硬件故障、人为误操作或软件问题导致的数据丢失。在Windows环境中,系统原生提供了强大的命令行工具和任务调度能力,无需依赖第三方软件即可构建自动化解决方案。通过批处理脚本调用xcopy、robocopy等命令实现文件复制,结合forfiles命令进行过期文件清理,再依托任务计划程序实现定时触发,能够构建出零成本、高可靠性的自动化备份体系。这种方案特别适合需要定期备份项目代码、设计文档、财务记录等数字资产的开发

weixin_32642109的博客 245

关于Windows下定时器的使用

<br />在VC中,我写了不少应用级的软件,多数基于MFC来写代码。关于定时器的使用,在编码过程中,也会经常用到,现就常用的定时器作个比较,以方便大家使用。<br />常见的定时器有如下几种:CTimer、timeSetEvent和Socket通讯中的select<br />一、CTimer<br />CTimer的使用在MFC中最为常见,在基于CWnd的类中用起来简单、方便,缺点是必须要有窗口,可见的或不可见都可以。<br />使用方法如下:<br />1.开启定时器:<br />UINT SetTim

shape2100的专栏 2028

Codex:用命令行程序化控制蓝牙,实现自动化管理与故障排查

在系统管理与设备控制领域,命令行接口(CLI)是实现自动化与批量操作的核心工具。其原理在于绕过图形界面,直接与操作系统底层的服务或驱动进行交互,通过标准化的命令执行精准控制。这种技术价值在于将重复性、易出错的手动操作转化为可脚本化、可复用的自动化流程,极大地提升了运维效率与系统可靠性。在设备管理与故障排查的应用场景中,当图形界面失效或需要批量处理时,程序化控制显得尤为重要。本文以蓝牙管理为例,探讨如何利用类似Codex的工具,通过命令行直接与蓝牙管理服务对话,实现服务重启、适配器重置、设备扫描配对等操作,并

weixin_34413802的博客 388

windows编程 第10课 定时器消息

程序创建定时器,当达到时间间隔时,定时器会向程序发送一个WM_TIMER消息。定时器的精度是毫秒,但是。例如设置时间间隔为1000ms,但是会在非1000毫秒到达消息。lPARAM 定时器处理函数的指针。wPARAM 定时器ID。

qq_35984700的博客 288

Windows自动关机命令与任务计划实用指南

系统定时关机是计算机基础运维中的重要功能,通过操作系统原生工具实现可避免第三方软件依赖。Windows系统提供shutdown.exe命令行工具和任务计划程序两种核心方案,前者支持精确到秒的倒计时关机,后者可实现周期性任务调度。从技术实现看,关机命令通过调用系统API发送关机信号,任务计划程序则基于Windows事件触发器机制。合理使用这些功能不仅能实现节能降耗,还能确保长时间运算任务完成后自动释放资源。在企业IT管理中,结合组策略和PowerShell脚本可实现更复杂的条件关机逻辑,如低负载关机或远程多机

weixin_29198045的博客 273

告别手动清理!用Everything+批处理脚本打造全自动垃圾文件清理系统

本文介绍如何利用Everything的闪电搜索能力与Windows批处理脚本,构建一套全自动垃圾文件清理系统。通过结合Everything命令行工具与任务计划程序,实现定时、精准地清理临时文件、缓存和日志,彻底告别手动清理的繁琐,尤其适合多设备运维与效率追求者。

y7z8a的博客 587

Windows实现高精度定时器的三种方法

前段时间一个项目需要用到1/24s的高精度定时器,每秒的误差不能超过10ms,大约41.666666666毫秒的延时,普通Sleep肯定是没办法满足的了,可以用以下新的三种方法: /* // 1秒=1000毫秒(ms) // 1毫秒=1/1000秒(s) // 1秒=1000000 微秒(μs) // 1微秒=1/1000000秒(s) // 1秒=1000000000 ...

Koma的主页 3万+

告别电脑卡顿:Everything+批处理脚本打造自动化清理系统(含完整代码)

本文介绍如何利用Everything搜索引擎与Windows批处理脚本构建自动化系统清理方案。通过精准的文件搜索语法定位临时文件、日志、缓存等垃圾文件,结合可定制的批处理脚本实现安全、自动化的清理流程,并集成任务计划程序实现无人值守运行,有效解决电脑卡顿问题。

weixin_29255731的博客 130

Windows下的高精度定时器实现及精确时刻获取

    通讯、VOIP、视频等领域的很多核心技术对时间精度的要求非常高,比如数据采集、时间同步、媒体流平滑控制、拥塞算法等等,很多技术都是以毫秒为单位来进行计算和控制的。但是Windows设计之初并不是以实时系统为目标的,所以Windows系统的时间精度一直不高,实际最小单位是15ms左右,导致的结果就是所有Windows的时间、线程相关的操作都无法以1ms来实现精确控制。受影响的操作包括Sleep、GetTickCount、_ftime等等。比如你调用Sleep(2),期待2ms之后线程自动唤醒,但是实际

Akumas Lab 1万+

NAS与本地文件夹实时同步的自动化方案

本文详细介绍了NAS与本地文件夹实时同步的自动化方案,通过RaiDrive+FreeFileSync+任务计划程序的组合实现跨品牌兼容、精确控制和低资源占用的高效同步。文章涵盖基础环境搭建、实战配置、同步策略选择及自动化任务设置,帮助用户轻松实现多设备间的数据统一性和便捷访问。

weixin_28366353的博客 375

保姆级教程:用RaiDrive+FreeFileSync实现NAS与本地文件夹自动同步(附避坑指南)

本文提供了一套详细的自动化数据备份方案,指导用户如何利用RaiDrive将NAS文件夹映射为本地驱动器,再结合FreeFileSync实现与本地文件夹的定时、精准同步。文章深入解析了SMB与WebDAV协议的选择、同步策略配置以及通过Windows任务计划程序实现后台自动化运行的全过程,并附有实用的性能优化与故障排查指南,帮助用户构建稳定可靠的个人数据自动备份流。

weixin_29205061的博客 278

C#:小工具项目-闹钟的实现

0.思路 主要是用TimeSpan记录闹钟时间和现在的时间的差值,如果小于0则证明闹钟到了。 1.代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawi...

八步赶蝉 5629

易语言开发的定时关机与重启小程序实战工具

易语言是国内自主开发的全中文可视化编程语言,专为降低编程门槛而设计。其语法贴近自然中文表达,无需记忆复杂符号,支持拖拽式界面构建,极大提升了开发效率。特别适用于Windows平台下的小型工具软件开发,如系统辅助、自动化脚本等场景。程序最根本的功能是在预设时间触发操作系统级别的关机指令。这个“时间阈值”可以以两种形式呈现:一是绝对时间(如“2025年4月5日 23:30”),二是相对时间(如“60分钟后”)。

weixin_35756892的博客 765

告别重复点击!AutoClicker:Windows鼠标自动化终极解决方案

在数字化办公时代,你是否厌倦了每天重复点击鼠标上百次?无论是软件测试、数据录入还是游戏操作,重复性鼠标点击不仅耗时耗力,还容易出错。今天,我要为你介绍一款简单高效的Windows自动化工具——AutoClicker,它能让你的鼠标自动工作,彻底解放双手! AutoClicker是一个基于C#和WPF开发的免费开源工具,专为Windows用户设计,提供完整的鼠标点击自动化功能。无论你是普通办公人员

gitblog_00123的博客 164

通过CN3口直接控制台达伺服电机A2-M(二)

既然可以通过RS485与伺服驱动器进行通讯,那么就肯定可以控制转速 首先,需要了解下 ‘控制模式及控制命令输入源设定’ 依据以上资料,速度控制模式有两种,S和SZ模式,分别对应模式选择中的02和04,对P1-01的地址0102进行写地址操作即可实现,一开始我使用了S模式,但是这个模式在寸动模式下会自动运转,不符合我控制的要求,后面改用SZ模式,就可以实现零速度。 使用串口工具发送命令:“01 06 01 02 00 04 28 35”即可以实现设置,设置完成后可以手动在伺服驱动器的按键面板上进行确

HKing_evil的博客 6825

腾讯、飞书等在线表格自动化编辑--python

在线文档自动化处理数据

qq_32828053的博客 2万+

WM_TIMER--SetTimer的函数

SetTimer的函数原型为:           UINT_PTR  SetTimer( HWND  hWnd, UINT_PTR  nIDEvent, UINT uElapse, TIMERPROC  lpTimerFunc);           其中hWnd是和t

学习程序 326

UIPath 获取网页元素做遍历点击的实现

UIPath 获取网页元素做遍历点击的实现

geekqian的博客 1万+

桌面无规律弹窗,刷新,输入法被打断的解决经验

主要注意Conhost.exe这个程序,所有一闪而过的弹窗、后台命令行程序,都是靠Conhost.exe这个 “壳” 运行的,选中一个Conhest.exe,右键选择properties。,Windows 自带工具看不到,用微软官方的 Process Monitor(Procmon)能直接抓到超轻量的微软官方小工具。1到 Procmon 里的Conhost.exe记录,看它启动的子进程(比如我当时的imgcmp.exe)的路径。,你等弹窗出现后,停止捕获,就能在日志里直接看到是谁启动的这个程序了。

2402_85248853的博客 537

小米万兆路由器里的Docker安装可道云(Kodexplorer)私有网盘

小米2022年12月份发布了万兆路由器,里面可以使用Docker。 今天尝试在小米的万兆路由器里安装[可道云](http://kodcloud.com/)(Kodexplorer)私有网盘。

engchina的专栏 1万+

VS(QT)调用Matlab函数的方法

调试–>窗口–>异常设置–>Win32 Exceptions全部不要勾选。选择Microsoft Visual C++ 2017。将生成的.h和.lib分别放置在对应的文件夹。输入mex -setup C++输入deploytool选择。选择Realse x64。

woshigaowei5146的博客 592

c++ clock-3

1.输入格式改为__时__分__秒(仍不可小数)c++ clock-1的优化版本,

JJL 2013 03 10(阿汪) 327

从HCI层浅析LE Audio通话建立流程

本文分析了BLE AUDIO通话协议建立的全过程。当手机来电时,系统会通过CCP EATT链路通知耳机准备通话,并断开原有音乐CIS连接。随后建立通话专用的CIG组,其参数设置(如MAX SDU SIZE=80、RTN=2)与音乐场景明显不同,更注重通话的实时性。文中详细描述了设置ISO数据路径、启用ASE、建立CIS连接等关键步骤,特别指出通话采用Conversational音频上下文类型。最后解析了ISO数据包参数含义,展示了10ms周期、32kHz采样率等通话特性参数。整个过程体现了BLE AUDIO

十多年蓝牙协议软件开发,擅长蓝牙协议分析 1863

终极Windows内存管理方案:Mem Reduct深度技术解析与专业调优指南

Mem Reduct是一款基于Windows Native API的轻量级实时内存管理工具,专为解决Windows系统内存占用过高和缓存累积问题而设计。这款开源应用程序通过底层系统接口直接操作内存工作集、待机页面列表和系统文件缓存,为技术用户提供了一套完整的内存优化解决方案。 ## Windows内存管理困境与技术挑战 Windows系统在长期运行过程中,即使关闭了应用程序,仍会保留大量缓存数

gitblog_01200的博客 436

UDF学习(二)基础数据类型与常见宏

thread_loop_c (t,d) 必须与begin_c_loop (c,t)同时使用,但begin_c_loop (c,t)不一定与thread_loop_c (t,d)同时使用。同理thread_loop_f(t,d)必须与begin_f_loop (c,t)同时使用,但begin_f_loop (c,t)不一定与thread_loop_f(t,d)同时使用。begin_c_loop (c,t) 在计算域内对网格单元进行循环。c_face_loop (c,t)遍历网格单元上的所有网格面。

weixin_44386973的博客 857

15、虚拟环境中的数据保护与恢复方案解析

本文深入解析了虚拟环境中两种重要的数据保护与恢复解决方案:RecoverPoint for Virtual Machines(RP4VM)在VxRail上的设计,以及Veeam Backup & Replication(VBR)与VxRail的集成方案。文章详细介绍了RP4VM的网络布局、故障转移场景及其相关问题,以及VBR的架构设计、备份与复制流程、许可证选项及其多平台支持特性。此外,还探讨了RP4VM与VBR结合使用的综合解决方案,以及未来数据保护领域的发展趋势,如智能化管理、云原生集成和零信任架构,为

t4y5u6i7o的博客 96
上一篇: Linux内核中实现生产者与消费者(避免无效唤醒)
下一篇: Linux网卡名称的生成规则
无忧老猪
博客等级 码龄18年 200粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值