如何在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);
}
}
这是因为你的调度程序管理处理器中的不同线程。这个进程并不是一直在处理器中运行,所以可能会出现奇怪的行为。使用线程的程序很少是确定的(这就是为什么第一次得到167,第二次得到201)
由于Windows不是实时操作系统,因此很难达到这种分辨率。
最接近的可能是使用Windows API函数CreateTimerQueueTimer()
。这是一个高分辨率计时器,但它可能仍然不够高的分辨率为您的目的。
你可能还是想尝试一下。从c#调用是很尴尬的,因为它使用了一个回调函数,而Windows期望它是一个本机方法。这是可能的,这里有一篇关于如何从c#调用它的文章。