3

正確に 10 ミリ秒の「ティック」を提供するコードが必要ですが、Windows でこれを達成する方法に関して他の記事と矛盾する多くの記事を見て困惑しています。

私は最初のステップを管理しました-マルチメディアタイマーを使用して1ミリのスリープを提供しました。

スリープ コードがすべてのマシン IsHighResolution true または false、シングルまたはマルチ プロセッサ システムなどで確実に機能するようにする方法はありますか?

[編集] マルチコア システムでストップウォッチを使用する際の問題に関する以前の質問: マルチコアおよびスレッド対応の .Net ストップウォッチ? [/編集]

4

1 に答える 1

0

コメントでこれを書くことができなくてごめんなさい... 2番目のスレッドを使用する可能性がある場合は、ループを使用して時間を無駄にすることができます...次のように:

    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;
        }
    }
  }

しかし、それはかなり醜い解決策だと思います...

于 2015-05-09T14:49:33.380 に答える