怎样强制停止一个QT线程
答案:2 悬赏:0 手机版
解决时间 2021-02-27 18:56
- 提问者网友:缘字诀
- 2021-02-27 08:16
怎样强制停止一个QT线程
最佳答案
- 五星知识达人网友:封刀令
- 2021-02-27 09:00
调用terminate()~``; 或者终止线程所在的进程也可!
最好是在循环条件中加个终止变量, 需要终止时改变变量的值来结束比较合适
最好是在循环条件中加个终止变量, 需要终止时改变变量的值来结束比较合适
全部回答
- 1楼网友:酒醒三更
- 2021-02-27 10:15
qt线程有3个函数可以关闭线程,分别是:
void quit ()
相当于exit(0)。
void exit ( int returncode = 0 )
调用exit后,thread将退出event loop,并从exec返回,exec的返回值就是returncode。
通常returncode=0表示成功,其他值表示失败。
void terminate ()
结束线程,线程是否立即终止取决于操作系统。
线程被终止时,所有等待该线程finished的线程都将被唤醒。
terminate是否调用取决于setterminationenabled ( bool enabled = true )开关。
其中quit与terminate是槽,可以直接用信号连接关闭线程,不过一般不建议使用terminate,还有想关闭线程,最好像下面例子;
直接调用stop接口就行了,线程就会关闭
class thread : public qthread
{
q_object
public:
thread();
void setmessage(const qstring &message);
void stop();
protected:
void run();
private:
qstring messagestr;
volatile bool stopped;
};
thread::thread()
{
stopped = false;
}
void thread::run()
{
while (!stopped)
std::cerr stopped = false;
std::cerr }
void thread::stop()
{
stopped = true;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯