.net中的同步定时器?

时间:2011-11-01 17:43:17

标签: .net winforms visual-c++ c++-cli

我正在使用Visual C ++ 2008 Express Edition构建一个应用程序,这是一个Windows窗体应用程序,因此使用托管C ++ / CLI。

我是新手,需要以下指导:

我有一个基本上重新启动HID接口设备的功能。我想显示一个进度条(一种虚拟进度条大约30秒),每秒进展30次。在这结束之后,我希望执行所有这些后的代码。

我尝试使用System.Windows.Forms计时器执行此操作,它只是在timer-> Enabled = true事件之后立即执行代码。

以下是一些有用的代码:

   private:System::Void hidReboot(System::Void) {
    System::UInt16 res = 0;

    //bring up form to display progress bar

    res = SendRebootCmd();
    if (res == true)
    {
        timer1->Enabled = true; //in this tick event..i have the progress bar stuff
        //some other code here
    }
}

所以基本上,评论在这里说//其他代码,我只想在进度条完成且计时器计数达到30个刻度(1秒刻度增量--30秒)时才这样做。

我已尝试在那里放置一个while循环,但我不能使用它,因为它挂起UI线程,因此不会引发计时器的tick事件。

任何建议,阅读或提示将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

你不应该对这个功能进行任何等待。只需启动计时器,然后退出该功能。

在计时器中添加剩余的功能,并使用一个确定倒计时是否已完成的检查。

答案 1 :(得分:0)

Windows.Forms.Timer适用于此。我怀疑你的Interval不合适。

在您的情况下,将Interval设置为1000(以ms为单位,而不是秒)。这应该导致Tick事件每秒发生一次。