2017-03-27 10 views
0

私のアプリでストップウォッチを設定する必要があります。私は1ミリ秒の間隔でディスパッチャータイマーを使ってそれをしようとしました。しかし、時計は約1秒までカウントするのに約10秒かかるスピードで動作します。WPFタイムプレシジョンでストップウォッチを作成する

私はそれがスレッドの問題であると仮定しますが、それを克服する方法はありますか?

+0

あなたの問題を見つけるために役立つコードがあります。 –

+0

[StopWatch Class](https://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch(v = vs.110).aspx)はどうですか? – 3615

+0

どのような目的のために「ストップウォッチ」(何かを測定する?クロックアプリケーション?)を使いたいですか?問題のあるコードを表示することはできますか(*「秒にカウントするのに約10秒かかる」*)?タイマーの不正確さを理解するには、[this](http://stackoverflow.com/q/1512294/1997232)をよく読んでください。 – Sinatr

答えて

0

この例は非常に便利です。

public partial class MainWindow: Window 
     { 
      DispatcherTimer dispatcherTimer = new DispatcherTimer(); 
      Stopwatch stopWatch= new Stopwatch(); 
      string currentTime = string.Empty; 
      public MainWindow() 
      { 
       InitializeComponent(); 
       dispatcherTimer .Tick += new EventHandler(dt_Tick); 
       dispatcherTimer .Interval = new TimeSpan(0, 0, 0, 0, 1); 
      } 

      void dt_Tick(object sender, EventArgs e) 
      { 
       if (stopWatch.IsRunning) 
       { 
        TimeSpan ts = sw.Elapsed; 
        currentTime = String.Format("{0:00}:{1:00}:{2:00}", 
        ts.Minutes, ts.Seconds, ts.Milliseconds/10); 
        clocktxt.Text = currentTime; 
       } 
      } 

      private void startbtn_Click(object sender, RoutedEventArgs e) 
      { 
       stopWatch.Start(); 
       dispatcherTimer .Start(); 
      } 

      private void stopbtn_Click(object sender, RoutedEventArgs e) 
      { 
       if (stopWatch.IsRunning) 
       { 
        stopWatch.Stop(); 
       } 
       elapsedtimeitem.Items.Add(currentTime); 
      } 

      private void resetbtn_Click(object sender, RoutedEventArgs e) 
      { 
       stopWatch.Reset(); 
       clocktxt.Text = "00:00:00"; 
      } 
     } 
関連する問題