2017-03-27 8 views
0

내 스톱워치를 설치해야합니다. 디스패처 타이머를 사용하여 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"; 
      } 
     }