.NET中的精确计时

geo*_*tnz 10 .net c# midi timing naudio

我刚看到这个问题,其中一个答案表明System.Diagnostics.Stopwatch只能用于诊断性能而不能用于生产代码.

在这种情况下,什么是在.NET中获得精确计时的最佳方法?我目前正处于使用NAudio的MIDI输出功能构建一个非常简单的MIDI音序器的早期阶段.我希望能够以尽可能小的抖动将MIDI消息发送到(例如)1/10s.这是可行的,还是像上下文切换这样的事情毁了我的一天?

我目前在控制台应用程序中有一些代码,Stopwatch在150bpm生成1/16笔记流时不断调用和计算抖动.在这种情况下抖动非常低.但是,我将把它移到另一个线程,所以我不知道是否仍然如此.

Ric*_*dle 6

如果您不介意P/Invoke,可以使用QueryPerformanceCounter:http://www.eggheadcafe.com/articles/20021111.asp

  • 根据我的理解,如果可以使用,秒表使用QueryPerformanceCounter.我没有任何反对QPC的东西,并且之前在C++/Win32应用程序中使用过它,但是我不知道CLR的较低级别发生了什么,所以想知道是否有更好的方法. (7认同)