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