1
1
mirror of https://github.com/KenanZhu/AutoLibrary.git synced 2026-06-18 23:43:02 +08:00

fix(ALMainWindow): fix the clean up issue of worker thread and config window (concernd commit #389ac88)

This commit is contained in:
2025-11-22 14:11:22 +08:00
parent 15ea47dd07
commit 1038a86aff
+21 -14
View File
@@ -80,6 +80,7 @@ class AutoLibWorker(QThread):
self self
): ):
auto_lib = None
try: try:
if not self.checkTimeAvailable(): if not self.checkTimeAvailable():
self.showTraceSignal.emit( self.showTraceSignal.emit(
@@ -98,13 +99,14 @@ class AutoLibWorker(QThread):
ConfigReader(self.__config_paths["system"]), ConfigReader(self.__config_paths["system"]),
ConfigReader(self.__config_paths["users"]), ConfigReader(self.__config_paths["users"]),
) )
auto_lib.close()
self.showTraceSignal.emit("AutoLibrary 运行结束")
except Exception as e: except Exception as e:
self.showTraceSignal.emit( self.showTraceSignal.emit(
f"AutoLibrary 运行时发生异常 : {e}" f"AutoLibrary 运行时发生异常 : {e}"
) )
finally: finally:
if auto_lib:
auto_lib.close()
self.showTraceSignal.emit("AutoLibrary 运行结束")
self.finishedSignal.emit() self.finishedSignal.emit()
@@ -242,9 +244,10 @@ class ALMainWindow(QMainWindow, Ui_ALMainWindow):
config_paths: dict config_paths: dict
): ):
self.__alConfigWidget.configWidgetCloseSingal.disconnect(self.onConfigWidgetClosed) if self.__alConfigWidget:
self.__alConfigWidget.deleteLater() self.__alConfigWidget.configWidgetCloseSingal.disconnect(self.onConfigWidgetClosed)
self.__alConfigWidget = None self.__alConfigWidget.deleteLater()
self.__alConfigWidget = None
self.ConfigButton.setEnabled(True) self.ConfigButton.setEnabled(True)
self.StartButton.setEnabled(True) self.StartButton.setEnabled(True)
self.StopButton.setEnabled(False) self.StopButton.setEnabled(False)
@@ -274,14 +277,15 @@ class ALMainWindow(QMainWindow, Ui_ALMainWindow):
): ):
self.setControlButtons(False, False, True) self.setControlButtons(False, False, True)
self.__auto_lib_thread = AutoLibWorker( if self.__auto_lib_thread is None:
self.__input_queue, self.__auto_lib_thread = AutoLibWorker(
self.__output_queue, self.__input_queue,
self.__config_paths, self.__output_queue,
) self.__config_paths,
self.__auto_lib_thread.finishedSignal.connect(self.onStopButtonClicked) )
self.__auto_lib_thread.showMsgSignal.connect(self.showMsg) self.__auto_lib_thread.finishedSignal.connect(self.onStopButtonClicked)
self.__auto_lib_thread.showTraceSignal.connect(self.showTrace) self.__auto_lib_thread.showMsgSignal.connect(self.showMsg)
self.__auto_lib_thread.showTraceSignal.connect(self.showTrace)
self.__auto_lib_thread.start() self.__auto_lib_thread.start()
@Slot() @Slot()
@@ -289,13 +293,16 @@ class ALMainWindow(QMainWindow, Ui_ALMainWindow):
self self
): ):
if self.__auto_lib_thread and self.__auto_lib_thread.isRunning(): if self.__auto_lib_thread:
self.showTrace("正在停止操作......") self.showTrace("正在停止操作......")
self.__auto_lib_thread.stop() self.__auto_lib_thread.stop()
self.__auto_lib_thread.wait() self.__auto_lib_thread.wait()
self.showTrace("操作已停止") self.showTrace("操作已停止")
self.__auto_lib_thread.showMsgSignal.disconnect(self.showMsg)
self.__auto_lib_thread.showTraceSignal.disconnect(self.showTrace)
self.__auto_lib_thread.finishedSignal.disconnect(self.onStopButtonClicked) self.__auto_lib_thread.finishedSignal.disconnect(self.onStopButtonClicked)
self.__auto_lib_thread.deleteLater() self.__auto_lib_thread.deleteLater()
self.__auto_lib_thread = None
self.setControlButtons(True, True, False) self.setControlButtons(True, True, False)
@Slot() @Slot()