当前位置:  开发笔记 > 编程语言 > 正文

从C#中的计时器获取准确的刻度

如何解决《从C#中的计时器获取准确的刻度》经验,为你挑选了1个好方法。

我正在尝试重建一个旧的节拍器应用程序,该应用程序最初使用C++中的MFC编写,使用C#在.NET中编写.我遇到的一个问题是让计时器足够准确地"打勾".

例如,假设一个简单的BPM(每分钟节拍数)为120,则计时器应每隔0.5秒(或500毫秒)打勾.然而,使用它作为刻度的基础并不完全准确,因为.NET只能保证计时器在经过的时间过去之前不会打勾.

目前,为了解决上面使用的相同的120 BPM示例,我将刻度设置为100毫秒,并且仅在每5个计时器刻度上播放点击声.这确实提高了准确度,但如果感觉有点像黑客.

那么,获得准确滴答的最佳方法是什么?我知道有更多的计时器可用于Visual Studio中随时可用的Windows窗体计时器,但我并不熟悉它们.



1> Will Dean..:

在.NET中有三个称为"Timer"的计时器类.听起来你正在使用Windows Forms,但实际上你可能会发现System.Threading.Timer类更有用 - 但要小心,因为它回调了池线程,所以你不能直接与你的表单交互回调.

另一种方法可能是调用Win32多媒体计时器 - timeGetTime,timeSetPeriod等.

一个快速谷歌找到了这个,这可能是有用的http://www.codeproject.com/KB/miscctrl/lescsmultimediatimer.aspx

"多媒体"(计时器)是在此上下文中搜索的热门词.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有