在 C# 中每 100 毫秒自动触发一次的事件处理程序

Event Handler that can be triggered every 100ms in C# automatically

提问人:DharuvVerma21 提问时间:6/9/2023 更新时间:6/9/2023 访问量:119

问:

有没有办法在 C# 中每 100 毫秒自动触发一次事件处理程序,而无需任何调用?

我需要该事件处理程序每 100 毫秒或在任何固定时间间隔后触发一个函数,以便处理某些内容。我无法找到一种方法来做到这一点。你能帮我解决这个问题吗?

C# 多线程 事件处理

评论

1赞 JonasH 6/9/2023
你所描述的是一个计时器。c# 中有一堆不同的计时器,具体取决于您的确切需求。
0赞 JonasH 6/9/2023
请注意,默认情况下,所有常见定时器的分辨率均为 ~16ms。

答:

1赞 DonMiguelSanchez 6/9/2023 #1

你可以使用DispatcherTimer

   DispatcherTimer updateTimer = new DispatcherTimer { Interval = new TimeSpan(0, 0, 0, 0, 100) };
   updateTimer.Tick += new EventHandler(UpdateHandler);
   updateTimer.Start();

事件处理程序应如下所示

 private void UpdateHandler(object sender, EventArgs e)
 {
      // Your Logic
 }

之后,您的事件将每 100 毫秒触发一次。

查看 Windows https://learn.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatchertimer?view=windowsdesktop-7.0 中的文档

评论

1赞 Enigmativity 6/12/2023
“you[r] 事件将每 100 毫秒触发一次”——严格来说并非如此。Windows 内部计时器每秒执行 64 个事件,因此,充其量可以将计时器降低到每 15.625 毫秒一次。因此,一个 100 毫秒的计时器将在 93.75 到 109.375 毫秒之间触发,或者每 109.375 毫秒触发一次,具体取决于它的实现方式。