2015-04-20 34 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; 
     } 
    } 
    } 

但是這是一個很醜陋的解決方案,我認爲......