如何在1秒内调用函数200次

本文关键字:调用 函数 200次 1秒 | 更新日期: 2023-09-27 17:51:20

这段代码没有在1秒内调用函数200次,第一次调用167次,第二次调用201次,但我没有得到200次

public Thread thread;
public Timer timer;
int i = 0;
private void Button_Click(object sender, RoutedEventArgs e)
{
   timer = new Timer(Mess);
   timer.Change(10000, 10000);
   thread = new Thread(Calc);
   thread.Start();
}
private void Mess(object state)
{
   MessageBox.Show("Call in on second : " + (i / 10).ToString());
   i = 0;
}
private void Calc(object obj)
{
   while (true)
   {
      i++;
      Thread.Sleep(5);
   }
}

如何在1秒内调用函数200次

这是因为你的调度程序管理处理器中的不同线程。这个进程并不是一直在处理器中运行,所以可能会出现奇怪的行为。使用线程的程序很少是确定的(这就是为什么第一次得到167,第二次得到201)

由于Windows不是实时操作系统,因此很难达到这种分辨率。

最接近的可能是使用Windows API函数CreateTimerQueueTimer()。这是一个高分辨率计时器,但它可能仍然不够高的分辨率为您的目的。

你可能还是想尝试一下。从c#调用是很尴尬的,因为它使用了一个回调函数,而Windows期望它是一个本机方法。这是可能的,这里有一篇关于如何从c#调用它的文章。