2015-04-20 32 views
4

我需要的代码将精确地提供10毫秒的“Ticks”,鉴于许多文章都与Windows中的其他文章相矛盾,在Windows上可靠的短时间跨度测量

我已经管理了第一步 - 使用多媒体计时器提供1米里的睡眠。

有没有办法确保睡眠代码可以在所有机器上工作?IsHighResolution无论是真还是假,单处理器或多处理器系统等?

[编辑] 前一个问题与多核系统中使用秒表ragarding问题: Multicore and thread aware .Net stopwatch? [/编辑]

+0

你想测量这些刻度还是要在这些时间间隔内调用代码?首先,最好的解决方案是使用Stopwatch – Georg

+1

@Georg - 以精确的时间间隔调用方法。此外,你似乎没有意识到StopWatch的问题,看看我在问题中添加的链接。 – Joezer

+2

@Maimonides在最近的处理器(即过去5年)中,这些问题往往不会发生,但无论如何都可以通过设置线程关系来解决。但它不会让你睡一个毫秒的确切时间。 –

回答

0

抱歉,我的意见,如果你还没有写这... 可能使用第二个线程,你可以 使用循环浪费时间......这样的:

class yourTimer{ 
    public void startTimer(Action a) 
    { 
     ParameterizedThreadStart fu = new ParameterizedThreadStart(waiter); 
     Thread t1 = new Thread(fu); 
     t1.Start(a); 
    } 
    public void stopTimer() 
    private void waiter(object o) 
    { 
     Action ac = (Action)o; 
     while(waitin) 
     { 
      if(DateTime.Now.Millisecond%10==0) 
      { 
       ac.Invoke(); 
      } 
      continue; 
     } 
    } 
    } 

但是这是一个很丑陋的解决方案,我认为......