当我的任务正在执行文件操作时,如果使用terminate 中止Qthread线程后,开启新的任务或者重新执行中止的任务后,执行文件的操作会被阻塞,任务无法继续执行,也没有报错(我的项目里没有使用锁,阻塞跟锁没有关系)。怎么安全的立即中止掉Qthread线程?
# 执行操作线程
class WorkerThread(QThread):
finished = pyqtSignal(object)
def __init__(self, param=None):
super().__init__()
self.param = param
def run(self):
# 模拟耗时操作
try:
analyse(self.param)
self.finished.emit()
except Exception as e:
traceback.print_exc()
class PythonToJS(QObject):
def __init__(self, view):
super().__init__()
self.th = None
# 执行
def run(self, reportId):
try:
self.th = WorkerThread(reportId)
self.th.finished.connect(self.finished)
self.th.start()
except Exception as e:
print('e', e)
# 终止任务
@pyqtSlot(str)
def terminate(self):
if self.th:
self.th.terminate()
self.th.wait()
self.th = None