diff --git a/src/plugin_system/core/event_manager.py b/src/plugin_system/core/event_manager.py index ea3d04a70..a9ffc0d62 100644 --- a/src/plugin_system/core/event_manager.py +++ b/src/plugin_system/core/event_manager.py @@ -2,7 +2,7 @@ 事件管理器 - 实现Event和EventHandler的单例管理 提供统一的事件注册、管理和触发接口 """ - +import asyncio from typing import Dict, Type, List, Optional, Any, Union from threading import Lock @@ -39,6 +39,7 @@ class EventManager: self._event_handlers: Dict[str, Type[BaseEventHandler]] = {} self._pending_subscriptions: Dict[str, List[str]] = {} # 缓存失败的订阅 self._initialized = True + self.event_handle_lock = asyncio.Lock() logger.info("EventManager 单例初始化完成") def register_event(self, event_name: Union[EventType, str]) -> bool: @@ -281,8 +282,8 @@ class EventManager: if event is None: logger.error(f"事件 {event_name} 不存在,无法触发") return None - - return await event.activate(params) + async with self.event_handle_lock: + return await event.activate(params) def init_default_events(self) -> None: """初始化默认事件"""