日期:2014-05-18  浏览次数:21267 次

求助:c#下用timeSetEvent精确定时和timeSetEvent运行机制
求助:

 我是这样的用的:
 [DllImport("winmm.dll", EntryPoint = "timeSetEvent")]
 public static extern int timeSetEvent(int uDelay, int uResolution, TimerCallback lp, Object dwUser, int uFlags);
int id1 = timeSetEvent(5,0,delay,0,0);

TimerCallback delay = new TimerCallback(this.nullHash);

  public void nullHash(Object state)
  {  
  MessageBox.Show("11111");
  }

想要实现的目的是在5MS之后,执行一段代码.但是调试发现,没有执行那个回调函数delay();

对c#的委托理解不是很好,所以请各位能给个能用的例子,谢谢!!!

还有这个timeSetEvent是新建一个线程去执行回调函数吗?那是不是我的目的达不到? 就是当前线程不等待timeSetEvent的回调函数返回,就继续执行下去了吗?

要是不行的话,有什么方法能实现我的目的?

谢谢各位!!!

------解决方案--------------------
http://www.knowsky.com/340309.html
------解决方案--------------------
为什么不用Timer控件而选择API?
------解决方案--------------------
Window系列(NT或者以上),响应时间在ms级,甚至更慢。因为其不是实时操作系统,所以它的这些响应容易受到其他因素影响,比如系统繁忙程度,消息队列堵塞等.
楼主的 5MS之后,执行一段代码 的需求可能有些要求过高了.
因为根据测不准原则,你执行这段代码实际本身就影响了计时的准确性,而下一个定时周期又会继续影响,这样累积下来,偏差很大的
------解决方案--------------------
六楼应提供一下代码,支持楼主