在timer控件中 使用sleep,为什么整个程序都休眠了。

ccll521 2010-08-27 12:30:51
怎么样只让timer休眠?

不要修改Interval的值,我把值设成1了。把它当线程用。
...全文
266 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccll521 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yeyanbin 的回复:]
Timer1->Enabled=false;
[/Quote]

是这样的。

打个程序比方

timer{

program1
program2
sleep(2000); //timer属性不改变,使timer在运行中休眠,不会造成阻塞。
program3

}
YeBinYe 2010-08-27
  • 打赏
  • 举报
回复
Timer1->Enabled=false;
xuzhu3000 2010-08-27
  • 打赏
  • 举报
回复
那么Timer和Sleep有区别么?
ccrun.com 2010-08-27
  • 打赏
  • 举报
回复
Timer组件是在主线程内运行,所以Sleep会暂停主线程,包括主窗体的响应都会暂停。
ccll521 2010-08-27
  • 打赏
  • 举报
回复
还是自己创建线程吧
ccll521 2010-08-27
  • 打赏
  • 举报
回复
我手里的程序不能用这个方法。

最好不要破坏程序的结构,移植到另一个timer可能还要做很多不必要的工作。

并且有很多地方需要sleep,要建很多timer。太浪费资源了。



不知道还有更好的办法吗
AFreshGirl 2010-08-27
  • 打赏
  • 举报
回复
Timer1有效时Timer2是无效的啊,Timer1里怎么等待Timer2啊?初始值是Timer1->Enabled = true; Timer2->Enabled = false;
ccll521 2010-08-27
  • 打赏
  • 举报
回复
写错了。
while(!b);
ccll521 2010-08-27
  • 打赏
  • 举报
回复
貌似我得 在Timer1里弄个死循环,等待 Timer2结束。

bool b=false;

Timer1{
program1;
while(!1)
program2;

}

Timer2{
b=true;

}

..看看还有更好的办法吗
ccll521 2010-08-27
  • 打赏
  • 举报
回复
好办法,就这么干。
AFreshGirl 2010-08-27
  • 打赏
  • 举报
回复
楼主可不可以这样?

Timer1{
program1;
program2;
Timer2->Interval = 2000;
Timer2->Enabled = true;
Timer1->Enabled = false;
}
Timer2
{
program3;
Timer2->Enabled = false;
Timer1->Enabled = true;
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧