我有一个使用QThreads的应用程序。我将不同的方法添加到队列连接中,它们按该顺序运行。这一直很有效。但是,根据测试的顺序(顺序可以是任何顺序),我的应用程序将停止(它不会冻结,但不会完成调用队列中其余的测试)。例如,如果运行序列[test1,test2,test3]。我将能够运行并完成(发出finish信号)test1和test2,但是test3不会被调用。然而,这种情况只是有时发生,并非总是如此。我认为线程在所有任务完成之前就退出了。有什么事我应该清理一下吗?在
相关代码如下:
# Initialize QThread
self.obj = signalTest.Worker()
self.thread = QThread()
self.obj.moveToThread(self.thread)
self.obj.finished.connect(self.signalFinished)
def runTests(self) # This is triggered by clicking a button
self.thread.start()
for index in range(0, len(sequence)):
if self.queue[index] == 'test1'
QMetaObject.invokeMethod(self.obj, 'run_test1', Qt.QueuedConnection,
Q_ARG(int, index)
elif self.queue[index] == 'test2'
QMetaObject.invokeMethod(self.obj, 'run_test2', Qt.QueuedConnection)
elif self.queue[index] == 'test3'
QMetaObject.invokeMethod(self.obj, 'run_test3', Qt.QueuedConnection)
@pyqtSlot(int)
def signalFinished(self, row)
# Do something here
工作线程:
^{pr2}$
目前没有回答
相关问题 更多 >
编程相关推荐