计时器速度VS无限while循环



我有下一个问题。在windows窗体中,我需要制作一个计时器来模拟while循环。我已经运行了一些测试,while循环比1间隔的计时器快27倍。我的问题是,如何用计时器模拟while循环。下面是我用来测试间隔的代码:

private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
             m_nI++;
             lbltimer->Text = m_nI++.ToString();
             if (m_nI > 10000000)
                 {
                     timer1->Enabled = false;
                 }
             while(1)
             {
                 m_nIMin++;
                 lblLoop->Text = m_nIMin.ToString();
                 Application::DoEvents();
                 if (m_nIMin > 10000000)
                 {
                     break;
                 }
             }
         }

m_nI被声明为全局,就像m_nIMin一样,它们都是int型。欢迎使用c++/cli或c++进行响应。提前谢谢。

p。我知道Application::DoEvents()不是很好使用,但它是唯一的解决方案测试无限while循环在windowsforms

计时器分辨率由系统心跳给出。这通常默认为64节拍/秒,即15.625毫秒。然而,有办法修改这些系统范围的设置,以实现定时器分辨率低至1毫秒左右。

有关详细信息,请参阅为什么。net计时器限制为15ms

另一方面,while循环连续运行,如果使用不当,可能会导致UI冻结。

最新更新