用的pyQT4去做的。后台线程大概:
class Back(QtCore.QObject):
self.flag = False
...
def stoplisten(self):
self.flag = True
def startlisten(self):
while True:
if self.flag:
#socket.close()
self.flag = False
return
else:
...
我在图形线程中新建立了个线程
self.t = QtCore.QThread()
self.back = Back()
self.back.moveToThread(self.t)
self.connect(self, QtCore.SIGNAL("startall()"), self.back.startlisten)
self.connect(self, QtCore.SIGNAL("stopall()"), self.back.stoplisten)
self.t.start()
通过两个按钮分别发射startall和stopall信号,现在问题出来了
本意是想通过flag的改变让后台线程在必要时刻退出循环。我记得以前做的程序也是这样搞得
但是现在只要通过startall()启动了startlisten槽之后,即使while是个空循环,在其运行的过程中,线程t就再也无法接受我主线程发出的信号了
把while循环去掉后,经测试便可正常接受start和stop信号。请问这是为什么?