gpt4 book ai didi

java - 在 UWP UI 上显示最多分钟的系统时间

转载 作者:行者123 更新时间:2023-12-01 19:34:39 24 4
gpt4 key购买 nike

我想仅在 UWP 中显示最多分钟的当前时间。时间需要与系统时间同步,以便系统时间和应用程序时间显示精确到分钟的时间。

我为此使用计时器。初始间隔基于当前时间。

private const string TIME_FORMAT = "hh:mm";

private static int TIMER_INTERVAL_ONE_MINUTE = 60 * 1000;
private static Timer countdownTimer;
private static DateTime liveDateTime = DateTime.Now;
private static bool isTimerRunning = false;
static ViewModel()
{
countdownTimer = new Timer();
countdownTimer.Elapsed += CountdownTimer_Elapsed;
countdownTimer.Interval = TIMER_INTERVAL_ONE_MINUTE - DateTime.Now.Second;
countdownTimer.Start();
isTimerRunning = true;
}

private static void CountdownTimer_Elapsed(object sender, ElapsedEventArgs e)
{
ApplicationDispatcher.RunOnUIThread(() =>
{
liveDateTime = DateTime.Now;
countdownTimer.Interval = TIMER_INTERVAL_ONE_MINUTE;
});
}

但有时我的用户界面与系统不同步,因为语句需要一些时间来执行,在这种情况下,初始设置不正确的比例很小。我不想太频繁地运行计时器。

如何通过同步系统时间显示最多分钟的时间。

问候

最佳答案

在您的代码中,您只需分配变量,这不需要使用 Thread 来完成。

在UWP中,获取当前时间的方式是通过DateTime.Now。如果您想将当前时间保存为变量并保持更新,则需要一个计时器。

我们推荐在UWP应用中使用DispatcherTimer,它是一个运行在UI线程上的定时器,可以这样写:

private DispatcherTimer _timer;
private static DateTime liveDateTime = DateTime.Now;
public ViewModel()
{
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromSeconds(1);
_timer.Tick += Timer_Tick;
_timer.Start();
// other code ...
}

private void Timer_Tick(object sender, object e)
{
liveDateTime = DateTime.Now;
}

由于不知道何时启动定时器,因此使用一分钟作为计时间隔可能会造成延迟。建议将定时器间隔缩短至10秒或更短。

致以诚挚的问候。

关于java - 在 UWP UI 上显示最多分钟的系统时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231558/

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