• 8744阅读
  • 20回复

如何在主程序中,通过一个按钮,暂停一个线程,再开始呢? [复制链接]

上一主题 下一主题
离线wangbenqq
 

只看楼主 倒序阅读 楼主  发表于: 2008-05-14
— 本帖被 XChinux 执行加亮操作(2008-05-16) —
问题如题/

这个要如何实现呢??

请教!!!
我搜索了以前的帖子,好像没有合适的。
所以不好意思有占用资源了!
离线lzian
只看该作者 1楼 发表于: 2008-05-14
看你的要求了
sleep(seconds)可以让线程睡眠一定的时间,也就是暂停一会
离线imho
只看该作者 2楼 发表于: 2008-05-14
bool QThread::wait ( unsigned long time = ULONG_MAX )
离线lzian
只看该作者 3楼 发表于: 2008-05-14
wait()不可以用,会导致主程序阻塞的
离线wangbenqq

只看该作者 4楼 发表于: 2008-05-14
我想自己控制暂停和开始,也就是我想让他开始的时候开始,想让它暂停的时候暂停

要怎么实现呢?
离线lzian
只看该作者 5楼 发表于: 2008-05-14
你可以设置一个槽,让线程在死循环中msleep()很短的时间,暂停按钮connect这个槽,
开始的时候让死循环break,
离线wangbenqq

只看该作者 6楼 发表于: 2008-05-14
不好意思,恕小弟技术不精。一个循环已经开始了,如何break这个循环阿?
离线lzian
只看该作者 7楼 发表于: 2008-05-14
设置一个flag,while(flag){msleep(100);};暂停的时候,flag置true,开始的时候,flag置false;
离线wangbenqq

只看该作者 8楼 发表于: 2008-05-14
但是一旦进入了那个死循环,整个界面就不相应了阿
离线lzian
只看该作者 9楼 发表于: 2008-05-14
引用第5楼lzian于2008-05-14 15:50发表的  :
你可以设置一个槽,让线程在死循环中msleep()很短的时间,暂停按钮connect这个槽,
开始的时候让死循环break,

这个槽是线程的,不是主程序的
离线wangbenqq

只看该作者 10楼 发表于: 2008-05-16
不好意思,我设置的槽怎么没相应阿??

我设施是,在主程序里面connect(),在线程里面定义了槽。
这样设置对么?
怎么点击了,没有相应阿??
离线lzian
只看该作者 11楼 发表于: 2008-05-16
线程里又没有窗口,你要看什么反映
贴代码
离线wangbenqq

只看该作者 12楼 发表于: 2008-05-16
不好意思,有反应了,但是现在就是msleep之后,整个程序就停止了,别的按钮都没反应了阿。这是为什么呢?我怎么才能开始它呢?
主程序中:    connect(ui.zanting1Button,SIGNAL(clicked()),&thread,SLOT(zanting1()));
线程里面public slots:
      void zanting1();
void RenderThread:: zanting1()
{
if(flag==false)  flag=true;
while(flag){msleep(1000);}
}
但是还是进入了while。界面就没反应了。没法再相应别的按钮了
离线wangbenqq

只看该作者 13楼 发表于: 2008-05-16
void RenderThread:: zanting1()
{
if(flag==false)  {flag=true;while(flag){msleep(1000);}}
else
{flag=false;
while(flag){msleep(1000);}
}
}
刚才代码有点问题,应该是这样
离线lzian
只看该作者 14楼 发表于: 2008-05-16
this->msleep(1000);
不用this指针就默认是主程序睡眠
离线wangbenqq

只看该作者 15楼 发表于: 2008-05-16
不好意思,还是不行阿,主程序还是不动了
离线lzian
只看该作者 16楼 发表于: 2008-05-16
把msleep()函数写在run()函数体内
离线lzian
只看该作者 17楼 发表于: 2008-05-16
if(flag==false)  {flag=true;while(flag){msleep(1000);}}
else
{flag=false;
while(flag){msleep(1000);}
}
把上述程序移到run()函数体内,用slot控制flag的值
离线wangbenqq

只看该作者 18楼 发表于: 2008-05-16
我的线程里面的主要的内容就是一个循环,就是一个while循环。
这个while一旦开始了,就停不下来了
离线lzian
只看该作者 19楼 发表于: 2008-05-16
那就写到循环里呗,在循环尾加上这些
离线wangbenqq

只看该作者 20楼 发表于: 2008-05-16
谢谢你的帮助阿,要不我自己得琢磨到什么时候阿!
太谢谢你了!!
好人阿!
快速回复
限100 字节
 
上一个 下一个