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

fix(timer,bulletin): 修复定时任务与公告栏 5 项交叉审查问题

This commit is contained in:
2026-06-26 10:50:48 +08:00
parent c8f9ae752f
commit 06740776a9
3 changed files with 36 additions and 21 deletions
+6 -6
View File
@@ -112,8 +112,8 @@ class ALBulletinPoller(QObject):
if self.__worker is None: if self.__worker is None:
return return
self.__disconnectWorker(self.__worker) self.__disconnectWorker(self.__worker)
self.__worker.wait(2000) self.__worker.wait(500)
self.__worker.deleteLater() self.__worker.delete()
self.__worker = None self.__worker = None
def __doFetch( def __doFetch(
@@ -149,8 +149,8 @@ class ALBulletinPoller(QObject):
if worker is not self.__worker: if worker is not self.__worker:
return return
self.__disconnectWorker(worker) self.__disconnectWorker(worker)
worker.wait(2000) worker.wait(500)
worker.deleteLater() worker.delete()
self.__worker = None self.__worker = None
old_ids = {str(b.get("id", "")) for b in self.__mgr.bulletins()} old_ids = {str(b.get("id", "")) for b in self.__mgr.bulletins()}
bulletins = data.get("bulletins", []) bulletins = data.get("bulletins", [])
@@ -180,8 +180,8 @@ class ALBulletinPoller(QObject):
if worker is not self.__worker: if worker is not self.__worker:
return return
self.__disconnectWorker(worker) self.__disconnectWorker(worker)
worker.wait(2000) worker.wait(500)
worker.deleteLater() worker.delete()
self.__worker = None self.__worker = None
if not self.__stopped: if not self.__stopped:
interval_ms = self.__mgr.syncInterval()*60*1000 interval_ms = self.__mgr.syncInterval()*60*1000
+10 -1
View File
@@ -151,6 +151,9 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow):
): ):
self.hide() self.hide()
self.__notification_type = ""
if not hasattr(self, "TrayIcon"):
return
self.TrayIcon.showMessage( self.TrayIcon.showMessage(
"AutoLibrary", "AutoLibrary",
"\n已最小化到托盘", "\n已最小化到托盘",
@@ -279,6 +282,9 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow):
): ):
self.setControlButtons(None, True, False) self.setControlButtons(None, True, False)
self.__notification_type = ""
if not hasattr(self, "TrayIcon"):
return
if not timer_task.get("silent", False): if not timer_task.get("silent", False):
self.TrayIcon.showMessage( self.TrayIcon.showMessage(
"定时任务 - AutoLibrary", "定时任务 - AutoLibrary",
@@ -296,6 +302,9 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow):
): ):
self.setControlButtons(None, False, True) self.setControlButtons(None, False, True)
self.__notification_type = ""
if not hasattr(self, "TrayIcon"):
return
self.TrayIcon.showMessage( self.TrayIcon.showMessage(
"定时任务 - AutoLibrary", "定时任务 - AutoLibrary",
f"\n定时任务 '{timer_task['name']}' 执行{'失败' if is_error else '完成'}", f"\n定时任务 '{timer_task['name']}' 执行{'失败' if is_error else '完成'}",
@@ -363,10 +372,10 @@ class ALMainWindow(MsgBase, QMainWindow, Ui_ALMainWindow):
self self
): ):
self.__bulletin_poller.setDialogOpen(True)
if self.__ALBulletinDialog is None: if self.__ALBulletinDialog is None:
self.__ALBulletinDialog = ALBulletinDialog(self) self.__ALBulletinDialog = ALBulletinDialog(self)
self.__ALBulletinDialog.finished.connect(self.onBulletinDialogClosed) self.__ALBulletinDialog.finished.connect(self.onBulletinDialogClosed)
self.__bulletin_poller.setDialogOpen(True)
self.__ALBulletinDialog.show() self.__ALBulletinDialog.show()
self.__ALBulletinDialog.raise_() self.__ALBulletinDialog.raise_()
self.__ALBulletinDialog.activateWindow() self.__ALBulletinDialog.activateWindow()
+20 -14
View File
@@ -88,8 +88,11 @@ class ALTimerTaskPoller(QObject):
return return
try: try:
task = self.__task_queue.get_nowait() task = self.__task_queue.get_nowait()
self.__timer.stop() except queue.Empty:
self.taskRunning.emit(task) return
self.__timer.stop()
self.taskRunning.emit(task)
try:
self.__worker = TimerTaskWorker( self.__worker = TimerTaskWorker(
task, task,
self.__input_queue, self.__input_queue,
@@ -98,8 +101,10 @@ class ALTimerTaskPoller(QObject):
) )
self.__worker.timerTaskWorkerIsFinished.connect(self.__onFinished) self.__worker.timerTaskWorkerIsFinished.connect(self.__onFinished)
self.__worker.start() self.__worker.start()
except queue.Empty: except Exception:
pass self.__worker = None
if not self.__stopped:
self.__timer.start(500)
@Slot(bool, dict) @Slot(bool, dict)
def __onFinished( def __onFinished(
@@ -112,14 +117,15 @@ class ALTimerTaskPoller(QObject):
self.__worker.wait(1000) self.__worker.wait(1000)
self.__worker.deleteLater() self.__worker.deleteLater()
self.__worker = None self.__worker = None
task["executed"] = True try:
self.taskFinished.emit(is_error, task) self.taskFinished.emit(is_error, task)
if not is_error: if not is_error:
self.taskExecuted.emit(task) self.taskExecuted.emit(task)
else: else:
self.taskError.emit(task) self.taskError.emit(task)
if not self.__stopped: finally:
self.__timer.start(500) if not self.__stopped:
self.__timer.start(500)
def __cleanupWorker( def __cleanupWorker(
self self
@@ -131,6 +137,6 @@ class ALTimerTaskPoller(QObject):
self.__worker.timerTaskWorkerIsFinished.disconnect(self.__onFinished) self.__worker.timerTaskWorkerIsFinished.disconnect(self.__onFinished)
except (TypeError, RuntimeError): except (TypeError, RuntimeError):
pass pass
self.__worker.wait(2000) self.__worker.wait(500)
self.__worker.deleteLater() self.__worker.delete()
self.__worker = None self.__worker = None