70 lines
1.7 KiB
C#
70 lines
1.7 KiB
C#
|
|
using System;
|
|||
|
|
using System.Timers;
|
|||
|
|
using 自救器呼吸器综合检验仪;
|
|||
|
|
|
|||
|
|
namespace 自救器呼吸器综合检验仪
|
|||
|
|
{
|
|||
|
|
public class MainViewModel : NotifyPropertyChangedBase
|
|||
|
|
{
|
|||
|
|
private DateTime _currentTime;
|
|||
|
|
private readonly Timer _timer;
|
|||
|
|
|
|||
|
|
// 可绑定的当前时间属性
|
|||
|
|
public DateTime CurrentTime
|
|||
|
|
{
|
|||
|
|
get => _currentTime;
|
|||
|
|
set => SetField(ref _currentTime, value);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public MainViewModel()
|
|||
|
|
{
|
|||
|
|
// 初始化当前时间
|
|||
|
|
CurrentTime = DateTime.Now;
|
|||
|
|
|
|||
|
|
// 创建定时器,每隔1秒触发一次
|
|||
|
|
_timer = new Timer(1000);
|
|||
|
|
_timer.Elapsed += Timer_Elapsed;
|
|||
|
|
_timer.Start();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
|||
|
|
{
|
|||
|
|
// 检查应用程序是否还在运行
|
|||
|
|
if (App.Current == null || App.Current.Dispatcher == null)
|
|||
|
|
{
|
|||
|
|
StopTimer();
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
App.Current.Dispatcher.Invoke(() =>
|
|||
|
|
{
|
|||
|
|
CurrentTime = DateTime.Now;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
// 应用程序关闭时忽略异常
|
|||
|
|
StopTimer();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void StopTimer()
|
|||
|
|
{
|
|||
|
|
if (_timer != null)
|
|||
|
|
{
|
|||
|
|
_timer.Stop();
|
|||
|
|
_timer.Elapsed -= Timer_Elapsed;
|
|||
|
|
_timer.Dispose();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 释放定时器资源(避免内存泄漏)
|
|||
|
|
public void Dispose()
|
|||
|
|
{
|
|||
|
|
_timer?.Stop();
|
|||
|
|
_timer?.Dispose();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|