Revit 2021环境下CefSharp运行速度较旧版本缓慢问题咨询
针对Revit 2021 CefSharp性能卡顿的解决方案
- 调整CefSharp对象注册时机:你的现有代码是先设置Address再注册绑定对象,Revit 2021内置的CefSharp加载逻辑有顺序变更,会导致绑定对象初始化滞后触发多次跨进程通信校验。调整顺序为先完成JS对象注册,再设置浏览器Address,修改后代码如下:
this.browser.JavascriptObjectRepository.Register("revit", new BoundObject(m_externalEvents, this.browser, this), true); this.browser.Address = "http://<online_path>";
- 关闭CefSharp默认的跨域安全校验及JS绑定异步等待:Revit 2021对CefSharp的沙箱权限做了更严格的默认限制,初始化CefSettings时添加以下配置:
var settings = new CefSettings { // 关闭跨域校验减少通信开销 CefCommandLineArgs = { ["disable-web-security"] = "1" }, // 禁用JS绑定的异步等待机制,匹配Revit 2020的默认逻辑 JavascriptFlags = "disable-async-js-binding", // 关闭GPU渲染 fallback到软件渲染,避免和Revit硬件加速逻辑冲突 DisableGpuAcceleration = true }; Cef.Initialize(settings);
- 优化BoundObject方法调用逻辑:Revit 2021中CefSharp和主线程的通信优先级被调低,所有BoundObject暴露给JS的方法建议加上
[AsyncMethodBinding]特性,避免同步调用阻塞UI线程,同时禁止在绑定方法内直接操作Revit UI元素,所有Revit API调用统一走ExternalEvent触发。 - 确认程序集绑定重定向配置:检查你的插件app.config中是否正确配置了CefSharp相关程序集的绑定重定向,确保所有CefSharp相关的dll(CefSharp.Core.dll、CefSharp.Wpf.dll/WinForms.dll、CefSharp.dll)均强制绑定到65.0.1版本,避免Revit加载过程中出现版本冲突带来的额外性能开销。
内容的提问来源于stack exchange,提问作者JPais
相关产品推荐
相关产品推荐

