本人上一篇关于IExternalEventHandler用法的文章有一些bug,易出现问题Attempting to create an ExternalEvent outside of a standard API execution,查询多篇文章和十五老师得知是非模态窗口不是有效API上下文。

重写写了关于IExternalEventHandler的小demo

单独一个类写继承IExternalEventHandler

public class MyExternalEventHandler : IExternalEventHandler
    {

        public Action<UIApplication> action;

        public void Execute(UIApplication app)
        {

            if (action != null)
            {
                action.Invoke(app);
            }

        }

        public string GetName()
        {
            return "";
        }
    }

写一个全局的变量

public static class GlobalEEH
    {
        public static ExternalEvent externalEvent;
        public static MyExternalEventHandler myExternalEventHandler;
    }

在TestCommand的构造函数中实例化全局变量

public class TestCommand : IExternalCommand
    {


        public TestCommand() {

            GlobalDatas.GlobalEEH.myExternalEventHandler = new Commons.MyExternalEventHandler();
            GlobalDatas.GlobalEEH.externalEvent = ExternalEvent.Create(GlobalDatas.GlobalEEH.myExternalEventHandler);
        }
    }

在需要调用外部事件时设置action的具体内容

GlobalDatas.GlobalEEH.myExternalEventHandler.action = (app) =>
{
    TaskDialog.Show("Revit", "Haha");
};
GlobalDatas.GlobalEEH.externalEvent.Raise();

 

posted on   HRDK  阅读(166)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具



点击右上角即可分享
微信分享提示