每隔几秒重复一次功能

52 .net c# loops

我想重复一个功能,从程序打开到每隔几秒钟关闭一次.在C#中执行此操作的最佳方法是什么?

Ken*_*rey 78

使用计时器.有3种基本类型,每种都适合不同的用途.

仅在Windows窗体应用程序中使用.此计时器作为消息循环的一部分进行处理,因此计时器可以在高负载下冻结.

当你需要同步时,请使用这个.这意味着tick事件将在启动计时器的线程上运行,允许您轻松执行GUI操作.

这是最强大的计时器,可以在后台线程上触发刻度线.这使您可以在后台执行操作,而不会冻结GUI或主线程.

对于大多数情况,我建议使用System.Timers.Timer.

  • MSDN的一个重要注意事项:Timer类仅在.NET Framework中可用.它不包含在.NET标准库中,并且在其他平台上不可用,例如.NET Core或Universal Windows Platform.在这些平台上,以及跨所有.NET平台的可移植性,您应该使用System.Threading.Timer类. (7认同)
  • 只是一个补充 - 实际上不仅仅是这个 - 例如,有`DispatcherTimer`(WPF/Silverlight),以及其他类似工具的计时器. (5认同)
  • 另请注意,如果设置SynchronizingObject,则会在UI线程上触发System.Timers.Timer的elapsed事件,否则会在ThreadPool线程上触发. (5认同)

Ivo*_*ops 42

为此,System.Timers.Timer效果最佳

// Create a timer
myTimer = new System.Timers.Timer();
// Tell the timer what to do when it elapses
myTimer.Elapsed += new ElapsedEventHandler(myEvent);
// Set it to go off every five seconds
myTimer.Interval = 5000;
// And start it        
myTimer.Enabled = true;

// Implement a call with the right signature for events going off
private void myEvent(object source, ElapsedEventArgs e) { }
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Timer Class(.NET 4.6和4.5)

  • 为了寻找快速复制和粘贴控制台的搜索者的利益,我使用了@IvoTops示例并在此创建了一个示例 - > https://gist.github.com/HockeyJustin/1161699bd26adb5c054d. (3认同)

Bri*_*sen 11

使用计时器.请记住,.NET附带了许多不同的计时器.本文介绍了这些差异.