新手求教,关于C#计时器应用!

最近做软件测试,要加速系统时钟速率,用的System.Timers.Timer,3个timer同时运行。其中:timer1是修改系统时间的间隔,乘以加速的倍率,让后修改系... 最近做软件测试,要加速系统时钟速率,用的System.Timers.Timer,3个timer同时运行。
其中:
timer1是修改系统时间的间隔,乘以加速的倍率,让后修改系统时间,实现时钟加速的目的,一般间隔很小,在100ms以内。
timer2是显示真实正确时间文本的刷新计时器。
timer3是还原和记录真实正确时间的计时器。
同时运行一段时间后,按停止按钮后,发现靠timer3记录出来的真实正确时间要比手机要快的多,但没有成倍增加。
我知道平时及时是靠两个时间点的差值来确定运行时间的,能否提供一种手段自己增量记录运行的时间?(System.Diagnostics.Stopwatch我也用了,时间也不对,貌似我用的方法不对?)
或者以上的用法有错误,给个正确的使用方法。谢谢!
学过《计算机操作系统》了解大概进程线程原理,想寻求一个更加精确的方法,获取更高的处理优先级,保证两个计时器分别计时,在合适的时间分别用两个计时器去改变系统时钟,尽量减少因CPU繁忙造成的排队。
展开
 我来答
fej121121
2014-09-30 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:527万
展开全部
直接读取系统时间一减不行吗
追问
你的意思另加一个计数器记录时间变动次数么?然后变动后时间减去改变的时间增量么?
这方法试过,运行时间越长,偏差越大。
追答
直接读取系统时间不行吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清怨孤战
推荐于2016-04-07 · TA获得超过105个赞
知道小有建树答主
回答量:134
采纳率:100%
帮助的人:132万
展开全部
百度timer:
System.Timers.Timer和System.Windows.Form.Timer如果触发时赶上非空闲,都会阻塞,不同之处前者排队,后者直接跳过。
System.Windows.Form.Timer它在ui线程上调用。

对于你的问题:
没太明白你要做的。但是计时,你在UI线程中做,感觉不好。要另开线程去计时,不用timer.

// tre1修改系统时间
Thead tre1 = new Thread(()=>
{

});
tre1.Isbackground = true;
tre1.start();

// tre2计时,真正运行时间
Thread tre2 = new Thread(()=>
{
// 休眠1秒

Thread.sleep(1000);

更改全局时间变量加1秒
});
用线程做也不能保证时间完全正确。因为执行代码肯定要花费时间。
追问
看明白了,使用单独的线程来手动触发执行代码,刚才跑去查了些资料发现一个更好的方法,直接用System.Threading.Timer就OK了,方便我这样的菜鸟之后再阅读代码。
多谢你给的思路,给指了条路子。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式