/// <summary> /// 添加事件 /// </summary> /// <param name="Key">唯一键</param> /// <param name="MatchName">匹配的名称</param> /// <param name="EventType">事件枚举类型</param> /// <param name="RegisterMethod">事件注册的方法</param> /// <param name="NeedRemove">是否先移除</param> internal void Add(object Key, string MatchName, SEEvent EventType, Action <object[]> RegisterMethod, bool NeedRemove = false) { lock (_mLock) { if (NeedRemove) { Remove(Key, MatchName, EventType); } if (!_mOccurrenceEventStorage.ContainsKey(Key, MatchName, EventType, out SolidEdgeDocumentEventHelper Helper)) { _mOccurrenceEventStorage.AddElement(Key, MatchName, EventType, Helper = new SolidEdgeDocumentEventHelper(EventType, RegisterMethod)); } else { throw new ArgumentException("重复添加事件:" + EventType.ToString()); } Helper.RegisterSolidEdgeEvent(GetActiveObjectDocument(MatchName)); } }
/// <summary> /// 添加事件 /// </summary> /// <param name="key">唯一键(如果Key是字符串类型,则寻找当前ASM下面匹配的ASM文档)</param> /// <param name="EventType">事件枚举值</param> /// <param name="RegisterMethod">事件执行方法</param> /// <param name="NeedRemove">是否需要移除已存在事件</param> internal void Add(object Key, SEEvent EventType, Action <object[]> RegisterMethod, bool NeedRemove = false) { lock (_mLock) { //系统事件 if (CheckSolidEdgeApplicationEvent(Key, EventType, RegisterMethod, true, NeedRemove)) { return; } //文档事件 if (NeedRemove) { Remove(Key, EventType); } SolidEdgeDocumentEventHelper Helper = new SolidEdgeDocumentEventHelper(EventType, RegisterMethod); if (!_mDicHelperOfDoc.ContainsKey(Key)) { _mDicHelperOfDoc.Add(Key, new Dictionary <SEEvent, SolidEdgeDocumentEventHelper>(new EnumComparer <SEEvent>()) { [EventType] = Helper }); } else { if (!_mDicHelperOfDoc[Key].ContainsKey(EventType)) { _mDicHelperOfDoc[Key].Add(EventType, Helper); } else { throw new ArgumentException("重复添加事件:" + EventType.ToString()); } } Helper.RegisterSolidEdgeEvent(GetActiveObjectDocument()); } }