我知道在.NET有三种计时器类型(参见ComparingtheTimerClassesinthe.NETFrameworkClassLibrary)。我选择了一个线程计时器,因为如果主线程繁忙,其他类型可能会漂移,我需要它是可靠的。这个定时器在定时器控制中的工作方式是放在另一个线程上的,这样它就可以在父线程不忙的时候随着工作开始完成而一直滴答作响。控制台应用程序中此计时器的问题在于,当计时器在另一个线程上计时时,主线程不会对应用程序关闭执行任何操作。我尝试添加一个whiletrue循环,但是当计时器关闭时主线程太忙了。 最佳答案 您
System.Windows.Forms.Timer()和System.Windows.Threading.DispatcherTimer()有什么区别?在哪些情况下,我们应该使用它们?有什么最佳做法吗? 最佳答案 Windows.Forms.Timer使用Windows窗体消息循环来处理计时器事件。在编写Windows窗体应用程序中使用的计时事件时应该使用它,并且您希望计时器在主UI线程上触发。DispatcherTimer是WPF计时机制。当你想以类似的方式处理计时(尽管这不限于单个线程——每个线程都有自己的调度程序)并且你正在
System.Windows.Forms.Timer()和System.Windows.Threading.DispatcherTimer()有什么区别?在哪些情况下,我们应该使用它们?有什么最佳做法吗? 最佳答案 Windows.Forms.Timer使用Windows窗体消息循环来处理计时器事件。在编写Windows窗体应用程序中使用的计时事件时应该使用它,并且您希望计时器在主UI线程上触发。DispatcherTimer是WPF计时机制。当你想以类似的方式处理计时(尽管这不限于单个线程——每个线程都有自己的调度程序)并且你正在
我知道有三个Timer类,System.Threading.Timer、System.Timers.Timer和System.Windows.Forms.Timer,但它们都没有.Reset()函数可以将当前耗时重置为0。是否有具有此功能的BCL类?有没有一种非黑客的方式来做到这一点?(我想也许改变它的时间限制可能会重置它)考虑重新实现具有此功能的Timer类会有多困难,或者如何使用BCL类之一可靠地实现它? 最佳答案 我总是...myTimer.Stop();myTimer.Start();...这是黑客攻击吗?:)根据评论,在T
我知道有三个Timer类,System.Threading.Timer、System.Timers.Timer和System.Windows.Forms.Timer,但它们都没有.Reset()函数可以将当前耗时重置为0。是否有具有此功能的BCL类?有没有一种非黑客的方式来做到这一点?(我想也许改变它的时间限制可能会重置它)考虑重新实现具有此功能的Timer类会有多困难,或者如何使用BCL类之一可靠地实现它? 最佳答案 我总是...myTimer.Stop();myTimer.Start();...这是黑客攻击吗?:)根据评论,在T
我有一个计时器对象。我希望它每分钟运行一次。具体来说,它应该运行OnCallBack方法,并在OnCallBack方法运行时变为非事件状态。一旦OnCallBack方法完成,它(aOnCallBack)将重新启动计时器。这是我现在拥有的:privatestaticTimertimer;privatestaticvoidMain(){timer=newTimer(_=>OnCallBack(),null,0,1000*10);//every10secondsConsole.ReadLine();}privatestaticvoidOnCallBack(){timer.Change(Tim
我有一个计时器对象。我希望它每分钟运行一次。具体来说,它应该运行OnCallBack方法,并在OnCallBack方法运行时变为非事件状态。一旦OnCallBack方法完成,它(aOnCallBack)将重新启动计时器。这是我现在拥有的:privatestaticTimertimer;privatestaticvoidMain(){timer=newTimer(_=>OnCallBack(),null,0,1000*10);//every10secondsConsole.ReadLine();}privatestaticvoidOnCallBack(){timer.Change(Tim
在哪里可以找到类似于WPF中的C#TimerControl的控件? 最佳答案 通常的WPF计时器是DispatcherTimer,它不是控件,而是在代码中使用。它的工作方式基本上与WinForms计时器相同:System.Windows.Threading.DispatcherTimerdispatcherTimer=newSystem.Windows.Threading.DispatcherTimer();dispatcherTimer.Tick+=dispatcherTimer_Tick;dispatcherTimer.Inte
在哪里可以找到类似于WPF中的C#TimerControl的控件? 最佳答案 通常的WPF计时器是DispatcherTimer,它不是控件,而是在代码中使用。它的工作方式基本上与WinForms计时器相同:System.Windows.Threading.DispatcherTimerdispatcherTimer=newSystem.Windows.Threading.DispatcherTimer();dispatcherTimer.Tick+=dispatcherTimer_Tick;dispatcherTimer.Inte
这个问题在这里已经有了答案:HowdoyouaddatimertoaC#consoleapplication(12个答案)关闭2年前。实现计时器的最佳方式是什么?代码示例会很棒!对于这个问题,“最佳”被定义为最可靠(失火次数最少)和精确。如果我指定15秒的间隔,我希望目标方法每15秒调用一次,而不是每10-20秒调用一次。另一方面,我不需要纳秒级的精度。在此示例中,该方法每14.51-15.49秒触发一次是可以接受的。