VB .NET周期实现
这里仅提供一个方案,当然会有比本方案更好的,欢迎提供。
简介
在vb.net实现周期调度的问题时(就是间隔固定的时间做什么事情),我们最先想到的一定是(反正我是)利用timer(定时器)来做这个计时的工作。采用多少ms来调用计时器的方式进行周期性的做一些事情。但是,当我用ms
级的周期调度的时候,会存在很大的误差。那么不得不想一个其他方案。
思路
- 做一个最小时间片,以最小时间片为单位进行计数,在最小时间片的基础上进行周期的划分。
- 我是基于1ms的时间片来进行操操作。
以下是代码
Private Declare Ansi Function timeGetTime Lib "winmm.dll" () As Long
Private BaseTime As Long
Private SaveTime As Long
Private Run_Flag As Boolean
Private Cycle_Count As Long
Private Sub b_start_Click(sender As Object, e As EventArgs) Handles b_start.Click
'this is init var and base station
BaseInit()
start_fun()
While Run_Flag
While timeGetTime < SaveTime + 1
Application.DoEvents()
End While
SaveTime = timeGetTime 'save time
Cycle_Count = Cycle_Count + 1 '1ms
If Cycle_Count Mod (5) Then
Run_5ms()
End If
'if you need ,you can add 10ms,50ms,100ms,1000ms etc.
End While
End Sub
Sub BaseInit()
Run_Flag = False
BaseTime = 0
SaveTime = 0
Cycle_Count = 0
show_task.Text = 0
End Sub
Sub start_fun()
BaseTime = timeGetTime
SaveTime = BaseTime
Run_Flag = True
End Sub
Sub Run_5ms()
'do what you want to do.
show_task.Text += 1
End Sub
Private Sub b_stop_Click(sender As Object, e As EventArgs) Handles b_stop.Click
BaseInit()
End Sub
说说Timer的问题
在计时方面,如果对时间精度不是很大要求的话,其实可以使用100ms
级别的timer,或者s
级别的timer,这样大概误差在30s会偏差一个2s左右的样子。对于有严格时间要求的,还是不要使用timer这个。
VB .NET周期实现的更多相关文章
- 连载《一个程序猿的生命周期》-6、自学C++,二级考过后,为工作的机会打下了基础
一个程序猿的生命周期 微信平台 口 号:职业交流,职业规划:面对现实,用心去交流.感悟. 公众号:iterlifetime 百木-ITer职业交流奋斗 群:141588103 微 博:h ...
- [转]JAVA虚拟机的生命周期
JAVA虚拟机体系结构 JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例 ...
- ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.5
摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.N ...
- Asp.Net生命周期系列五
如果您看了我的前四篇文章,应该知道目前Http请求已经流到了HttpModule这个程序员手中了,而且我们可以注册自己的HttpModule并且可以在里面注册一些事件来控制这个Http请求,但是到目前 ...
- ASP.NET页面生命周期总结(1)
图解:1) 浏览器 :把用户的操作封装成一个请求通过socket发送到后台服务器. 后台服务器:首先有个内核模块Http.sys 和针对每个应用程序池都有一个请求队列.然后请求到达http.sys ...
- VB.net 连接池
上篇博客介绍了临时表的使用,以及它的生命周期和连接池的关系.那么为了能更好的把握临时表的产生和消亡,本篇博客就介绍Vb.net连接池.在打开和关闭数据库连接时的耗费的资源是非常高的.那么在程序需要频繁 ...
- asp.net 管道模型+生命处理周期
http://www.cnblogs.com/qianlifeng/archive/2010/12/16/1908568.html https://msdn.microsoft.com/zh-cn/l ...
- 快速构建Windows 8风格应用30-应用生命周期管理
原文:快速构建Windows 8风格应用30-应用生命周期管理 引言 Windows 8 中可以启动多个应用并在其中切换,我们没有必要担心降低系统速度或消耗电池电量. 因为系统会自动挂起(有时会终止) ...
- 详细理解servlet实现的几种方式和生命周期
现在很多的开发都是用的框架,然后很多同学学习的时候又是直接接触的框架,对于底层的一些开发,完全没有任何的了解.虽然对于业务上面来说,没有什么问题.但是很多时候当你被面试问到,或者是想要了解框架底层原理 ...
随机推荐
- JavaWeb学习笔记——Tomcat数据源
server.xml配置数据帐号和密码等
- Java适配器设计模式
适配器设计模式,一个接口首先被一个抽象类先实现(此抽象类通常称为适配器类),并在此抽象类中实现若干方法(但是这个抽象类中的方法体是空的),则以后的子类直接继承此抽象类,就可以有选择地覆写所需要的方法. ...
- Envelope Letter
http://www.thefullwiki.org/More_C%2B%2B_Idioms/Envelope_Letter http://www.smallmemory.com/almanac/Co ...
- 用Open Live Account写博文的第一篇文章,立个flag
在设置的时候出了点问题,还好有blog这种神器,直接上网址http://www.cnblogs.com/yishujun/p/5328617.html 高亮插件来自 http://www.cnblog ...
- ReSharper 配置及用法(转)
1:安装后,Resharper会用他自己的英文智能提示,替换掉 vs2010的智能提示,所以我们要换回到vs2010的智能提示 2:快捷键.是使用vs2010的快捷键还是使用 Resharper的快捷 ...
- Nginx 支持 WAF 防护功能实战
WAF(Web Application Firewall),中文名称叫做“Web应用防火墙 WAF的定义是这样的:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提 ...
- css3d总结
3d舞台 设置 perspective(景深): length, 可以设置overflow:hidden 3d舞台下 -> 3d元素容器 设置 transform-style: preserv ...
- Orchard源码分析(7.2):Controller相关
概述 默认情况下,ASP.NET MVC内置的DefaultControllerFactory负责Controller实例的创建.Orchard定义了一个继承自DefaultControllerFac ...
- SQL having 子句
1.为什么存在? 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用. 2.举例子: SELECT Customer,SUM(OrderPrice) FROM Or ...
- APACHE POI教程 --java应用程序用POI与Excel交互
POI报表 --用POI与Excel交互 AURISOFT 第一章 POI简介 --Jakata Poi HSSF:纯java的Excel解决方案 在我们实际的开发中,表现层的解决方案虽然有多样,但是 ...