C#每秒获取当前时间并执行一些操作

时间:2018-10-23 18:48:26

标签: c# wpf winforms timer

我有一个UserControl。在此UserControl的载入事件中,我正在创建一个间隔为1秒的timer。在Timer_tick函数中,我得到current Date,然后遍历包含其他LIST的{​​{1}}。然后检查当前日期是否与列表中存储的日期匹配,然后执行某些操作。到这里为止一切正常。但是,一旦我得到UserControls并将其与LIST中存储的时间进行比较。它的行为很奇怪。 No 1,它与Windows任务栏上显示的时间永远不匹配。但是当条件满足时,存储在LIST和当前时间中的时间会匹配。它执行一些功能,但随后它会继续执行,即使当前时间已更改且条件为假,它仍会继续执行。我做错了什么?

Current time

Timer_tick

Timer timer = new Timer();
private async void TodoListControl_OnLoaded(object sender, RoutedEventArgs e) // UserControl Load
{
timer.Interval = (1000);
timer.Tick += Timer_Tick;
timer.Start();
}  

1 个答案:

答案 0 :(得分:1)

最后找到了原因。如果使用now.ToString("t")获取的当前时间是12:30 PM,并且与存储的时间12:30 PM相匹配,则条件为true,并显示通知,但条件if(item.Date.Trim() == date.Trim() && item.Time.Trim() == now.ToString("t").Trim())永远不会为假。因为使用此now.ToString("t")的每一秒钟的时间永远不会更新。

我的意思是,当我第一次在状态检查中获取now.ToString("t")时,它始终与12:30相同。它永远不会增加。这样做的原因是now在全局上被定义为DateTime now = DateTime.Now;,所以idk为什么但每次在本地范围内运行now.ToString("t")时,我都会得到与第一次运行时相同的时间。

所以我现在在函数中本地声明了此DateTime now = DateTime.Now;的每一秒也在now.ToString("t")之前运行,我得到了最新的时间