C#-时钟应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-时钟应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1335字,纯文字阅读大概需要2分钟。
内容图文
![C#-时钟应用](/upload/InfoBanner/zyjiaocheng/671/f301c6e4db9345dfba9a32db0a7d7f4e.jpg)
我正在C#.Net中创建一个时钟应用程序.我有0-9的每个数字的图像.我在主页构造函数中有一个计时器,它每秒钟滴答作响
DispatcherTimer tmr = new DispatcherTimer();
tmr.Interval = TimeSpan.FromSeconds(1);
tmr.Tick += new EventHandler(tmr_Tick);
tmr.Start();
void tmr_Tick(object sender, EventArgs e)
{
dt = DateTime.Now;
UpdateSecondsImages(dt);
}
private void UpdateSecondsImages(DateTime dt)
{
secondSource2 = dt.Second % 10;
secondDigit2.Source = digimgs[secondSource2];
if (secondSource2 == 0)
{
secondSource1 = dt.Second / 10;
secondDigit1.Source = digimgs[secondSource1];
}
if (secondSource1 == 0)
{
UpdateMinuteImages(dt);
}
}
但是我现在面临的问题是这段代码可能会跳过一分钟,请从性能的角度提出另一种使之平滑的方法.
解决方法:
简单.当您将计时器设置为每秒关闭时,您会说:“请至少睡一秒钟,然后醒来并通知我”.实际上,您可能睡了更长的时间.另外,不同的时序API彼此之间存在时钟漂移.计时器所基于的时钟可能与DateTime.Now所基于的时钟不同.
这样想吧-假设您实际上每1.02秒唤醒一次.
因此,每隔50秒,您将跳过渲染中的一个节拍.例如,您将从“ 49.98”(渲染为“ 49”)醒来,然后在下一个间隔“ 51.00”醒来.
一种简单的解决方法是休眠时间少于1秒.对于您的情况,我建议您在500-750毫秒之间休眠,而不是整整一秒.如果您在相同的第二时间间隔内醒来,则只需再次重新渲染一次即可.或作为一个简单的优化,当您已经醒来之后第二次计数自上次以来没有改变时,什么也不做.
尝试说:
tmr.Interval = TimeSpan.FromMilliSeconds(500);
内容总结
以上是互联网集市为您收集整理的C#-时钟应用全部内容,希望文章能够帮你解决C#-时钟应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。