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

标签 java c# uwp timer

我想仅在 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/

相关文章:

java - java中美国各州的地理定位(纬度/经度)

c# - ASP.NET Core Singleton 实例与 Transient 实例性能

windows-store-apps - 应用通过WACK但未通过商店提交认证

uwp - 通过 MS Graph API 发送电子邮件时包含电子邮件签名

java - 使用java查询mongo oplog的时间戳字段

Java Swing JPanel JPanel 内部 JScrollPane 大小调整

c# - 通过 C# 控制台应用程序运行批处理文件。命令被忽略

c# - 如何在 visual studio 中添加程序集 DocumentFormat.OpenXml.Wordprocessin

c# - 在 Xamarin Forms 中更改 BindableProperty 时不调用自定义控件 OnElementChanged

java - 如何防止从 IntelliJ Jetbrains 编辑器中的声明中删除前导空格?