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();
|
||
}
|
||
}
|
||
} |