我正在使用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事件。
任何建议,阅读或提示将不胜感激。谢谢!
答案 0 :(得分:1)
你不应该对这个功能进行任何等待。只需启动计时器,然后退出该功能。
在计时器中添加剩余的功能,并使用一个确定倒计时是否已完成的检查。
答案 1 :(得分:0)
Windows.Forms.Timer
适用于此。我怀疑你的Interval不合适。
在您的情况下,将Interval设置为1000(以ms为单位,而不是秒)。这应该导致Tick事件每秒发生一次。