💡
原文英文,约1700词,阅读约需7分钟。
📝
内容提要
Visual Studio在转向异步加载模型时,发现包加载存在循环请求问题。此更改旨在防止服务请求返回null,确保包在初始化完成前不会被视为已加载。开发者应避免在Initialize(Async)/SetSite中过早创建服务,以降低循环风险。
🎯
关键要点
-
Visual Studio转向异步加载模型,发现包加载存在循环请求问题。
-
此更改旨在防止服务请求返回null,确保包在初始化完成前不会被视为已加载。
-
开发者应避免在Initialize(Async)/SetSite中过早创建服务,以降低循环风险。
-
循环包加载请求将失败并返回HRESULT 0x80049283。
-
服务发现机制中,服务与包相关联,服务请求时包需加载并注册服务工厂。
-
递归包加载请求会导致死锁或返回null,需避免此类情况。
-
新设计确保包在Initialize(Async)/SetSite完成前不会被视为已加载。
-
AsyncLazy用于管理包加载,确保并发加载请求得到正确处理。
-
避免循环的最佳实践是延迟服务的获取,使用Lazy<T>或AsyncLazy<T>。
-
此更改减少了服务返回null的实例,提高了Visual Studio的稳定性。
-
用户反馈促使了这一更改,开发者应继续提供反馈以改进Visual Studio。
🏷️
标签
➡️