/// <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());
            }
        }