在 WPF 中创建秒表 - 时间精度

Kre*_*y 3 0 c# wpf multithreading timing dispatchertimer

我需要在我的应用程序中设置秒表。我尝试使用调度程序计时器来完成此操作,间隔为一毫秒。但是,时钟的运行速度大约需要十秒才能数到一秒。

我认为这是线程问题,但如何解决呢?

小智 5

这个例子对你来说非常有用。

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 = stopWatch.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";  
            }  
        }  
Run Code Online (Sandbox Code Playgroud)