1
1
mirror of https://github.com/KenanZhu/AutoLibrary.git synced 2026-08-01 21:59: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:
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
+10 -1
View File
@@ -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()
+20 -14
View File
@@ -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