gpt4 book ai didi

c# - 秒表的替代品?

转载 作者:行者123 更新时间:2023-11-30 12:14:02 25 4
gpt4 key购买 nike

我正在使用 WPF 开发一个非常简单的秒表,但是使用 System.Diagnostics 秒表非常慢而且根本不可靠,与我的应用程序每 1 秒的系统时钟相比是 3 秒在一个实际的时钟上。

我搜索了一些关于秒表变慢的问题,找到了很多结果但没有解决方案,所以我决定想出我自己的计数器。

这是我想出的示例:

System.Windows.Threading.DispatcherTimer _update;
DateTime _started;
bool isRunning = false;

更新线程:

_update = new System.Windows.Threading.DispatcherTimer(new TimeSpan(0, 0, 0, 0, 1), System.Windows.Threading.DispatcherPriority.Normal, delegate
{
if (isRunning)
iTimer.Content = new DateTime((DateTime.Now - _started).Ticks).ToString("HH:mm:ss");
}, this.Dispatcher);

我有 2 个按钮,bToggle 负责启动、停止和恢复它,另一个按钮称为 bReset。

private void bReset_Click(object sender, RoutedEventArgs e)
{
isRunning = false;
iTimer.Content = "00:00:00";
bToggle.Content = "Start";
}

private void bToggle_Click(object sender, RoutedEventArgs e)
{
if ((string)bToggle.Content == "Start")
{
isRunning = true;
_started = DateTime.Now;
bToggle.Content = "Stop";
}
else if ((string)bToggle.Content == "Resume")
{
isRunning = true;
bToggle.Content = "Stop";
}
else
{
isRunning = false;
bToggle.Content = "Resume";
}
}

启动和重置工作正常,但由于我在停止和恢复时使用的是实际时间,它会跳秒直到实际时间。

我怎样才能解决这个问题,或者是否有秒表的替代品,它实际上对当前时间具有很好的准确性?

最佳答案

您需要引入一个额外的变量 TimeSpan accumulatedTime,每当有人点击停止时,您都会在其中保存耗时间隔。

和:

iTimer.Content = (new DateTime((DateTime.Now - _started).Ticks) + accumulatedTime).ToString("HH:mm:ss");

关于c# - 秒表的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com