/*------------------------------------------------------------------------- * 功能描述:UpdaterRegister * 作者:xulisong * 创建时间: 2018/12/28 10:24:24 * 版本号:v1.0 * -------------------------------------------------------------------------*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Autodesk.Revit.DB; using Autodesk.Revit.UI; namespace FWindSoft.Revit { /// /// 注册updater相关 /// public abstract class UpdaterRegister : IRevitRegister { public UpdaterRegister() { } /// /// 关联项目 /// public Document RefDocument { get; set; } public bool IsOptional { get; set; } /// /// 当前updater,注册后生效 /// public RevitUpdater CurrentUpdater { get; private set; } public virtual void Register(ExternalApplication application) { //这里会不会导致重复注册,CurrentUpdater内存泄漏无法卸载 CurrentUpdater = GetUpdater(application); if (CurrentUpdater == null) return; CurrentUpdater.RegisterUpdater(RefDocument, IsOptional); var triggers = GetTriggers(application); foreach (var revitTrigger in triggers) { revitTrigger.AttachUpdater(CurrentUpdater); } } public virtual void Unregister(ExternalApplication application) { CurrentUpdater = CurrentUpdater ?? GetUpdater(application); if (CurrentUpdater == null) { return; } CurrentUpdater.UnregisterUpdater(RefDocument); } protected abstract List GetTriggers(ExternalApplication application); protected abstract RevitUpdater GetUpdater(ExternalApplication application); } }