我有一个QThread
从网络上获取数据。有时用户会询问其他内容,并且还需要获取数据更改。
在我当前的配置中,我在线程上调用terminate()
,更改输入数据,然后再次在线程上调用start()
。现在,这样可以正常工作,但有时我会在终止线程上调用isRunning()
或isFinished()
时遇到主事件循环。它永远陷入困境,直到我杀死进程才恢复。
isRunning()
或isFinished()
会挂在首位?他们不想阻止。答案 0 :(得分:1)
请勿使用terminate()
,请阅读documentation中的警告。
有可能重新启动QThread
,重新启动线程通常不是一个好主意,应该有一个更好的解决方案来做你想做的事情。
答案 1 :(得分:0)
在某些情况下,线程在终止后变得无法使用,isRunning()
和isFinished()
可能会挂起调用线程,即使只在TERMINATED
信号之后调用。
我的解决方法是终止一个帖子,忘记它并开始一个新的。