From 06740776a9e223d0cda50ff8a709f1ba82ecafba Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Fri, 26 Jun 2026 10:50:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(timer,bulletin):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=B8=8E=E5=85=AC=E5=91=8A?= =?UTF-8?q?=E6=A0=8F=205=20=E9=A1=B9=E4=BA=A4=E5=8F=89=E5=AE=A1=E6=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gui/ALBulletinPoller.py | 12 ++++++------ src/gui/ALMainWindow.py | 11 ++++++++++- src/gui/ALTimerTaskPoller.py | 34 ++++++++++++++++++++-------------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/gui/ALBulletinPoller.py b/src/gui/ALBulletinPoller.py index 3a3a614..730847e 100644 --- a/src/gui/ALBulletinPoller.py +++ b/src/gui/ALBulletinPoller.py @@ -112,8 +112,8 @@ class ALBulletinPoller(QObject): if self.__worker is None: return self.__disconnectWorker(self.__worker) - self.__worker.wait(2000) - self.__worker.deleteLater() + self.__worker.wait(500) + self.__worker.delete() self.__worker = None def __doFetch( @@ -149,8 +149,8 @@ class ALBulletinPoller(QObject): if worker is not self.__worker: return self.__disconnectWorker(worker) - worker.wait(2000) - worker.deleteLater() + worker.wait(500) + worker.delete() self.__worker = None old_ids = {str(b.get("id", "")) for b in self.__mgr.bulletins()} bulletins = data.get("bulletins", []) @@ -180,8 +180,8 @@ class ALBulletinPoller(QObject): if worker is not self.__worker: return self.__disconnectWorker(worker) - worker.wait(2000) - worker.deleteLater() + worker.wait(500) + worker.delete() self.__worker = None if not self.__stopped: interval_ms = self.__mgr.syncInterval()*60*1000 diff --git a/src/gui/ALMainWindow.py b/src/gui/ALMainWindow.py index f624d05..5eb2b42 100644 --- a/src/gui/ALMainWindow.py +++ b/src/gui/ALMainWindow.py @@ -151,6 +151,9 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow): ): self.hide() + self.__notification_type = "" + if not hasattr(self, "TrayIcon"): + return self.TrayIcon.showMessage( "AutoLibrary", "\n已最小化到托盘", @@ -279,6 +282,9 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow): ): self.setControlButtons(None, True, False) + self.__notification_type = "" + if not hasattr(self, "TrayIcon"): + return if not timer_task.get("silent", False): self.TrayIcon.showMessage( "定时任务 - AutoLibrary", @@ -296,6 +302,9 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow): ): self.setControlButtons(None, False, True) + self.__notification_type = "" + if not hasattr(self, "TrayIcon"): + return self.TrayIcon.showMessage( "定时任务 - AutoLibrary", f"\n定时任务 '{timer_task['name']}' 执行{'失败' if is_error else '完成'}", @@ -363,10 +372,10 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow): self ): - self.__bulletin_poller.setDialogOpen(True) if self.__ALBulletinDialog is None: self.__ALBulletinDialog = ALBulletinDialog(self) self.__ALBulletinDialog.finished.connect(self.onBulletinDialogClosed) + self.__bulletin_poller.setDialogOpen(True) self.__ALBulletinDialog.show() self.__ALBulletinDialog.raise_() self.__ALBulletinDialog.activateWindow() diff --git a/src/gui/ALTimerTaskPoller.py b/src/gui/ALTimerTaskPoller.py index 343f03a..a7992b3 100644 --- a/src/gui/ALTimerTaskPoller.py +++ b/src/gui/ALTimerTaskPoller.py @@ -88,8 +88,11 @@ class ALTimerTaskPoller(QObject): return try: task = self.__task_queue.get_nowait() - self.__timer.stop() - self.taskRunning.emit(task) + except queue.Empty: + return + self.__timer.stop() + self.taskRunning.emit(task) + try: self.__worker = TimerTaskWorker( task, self.__input_queue, @@ -98,8 +101,10 @@ class ALTimerTaskPoller(QObject): ) self.__worker.timerTaskWorkerIsFinished.connect(self.__onFinished) self.__worker.start() - except queue.Empty: - pass + except Exception: + self.__worker = None + if not self.__stopped: + self.__timer.start(500) @Slot(bool, dict) def __onFinished( @@ -112,14 +117,15 @@ class ALTimerTaskPoller(QObject): self.__worker.wait(1000) self.__worker.deleteLater() self.__worker = None - task["executed"] = True - self.taskFinished.emit(is_error, task) - if not is_error: - self.taskExecuted.emit(task) - else: - self.taskError.emit(task) - if not self.__stopped: - self.__timer.start(500) + try: + self.taskFinished.emit(is_error, task) + if not is_error: + self.taskExecuted.emit(task) + else: + self.taskError.emit(task) + finally: + if not self.__stopped: + self.__timer.start(500) def __cleanupWorker( self @@ -131,6 +137,6 @@ class ALTimerTaskPoller(QObject): self.__worker.timerTaskWorkerIsFinished.disconnect(self.__onFinished) except (TypeError, RuntimeError): pass - self.__worker.wait(2000) - self.__worker.deleteLater() + self.__worker.wait(500) + self.__worker.delete() self.__worker = None