首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppDomainSetup.SandboxInterop属性用于什么?

AppDomainSetup.SandboxInterop属性用于什么?
EN

Stack Overflow用户
提问于 2009-10-20 16:49:42
回答 1查看 261关注 0票数 2

我正在.net 3.5中阅读应用程序域的文档,并遇到了SandboxInterop。医生说

获取或设置一个值,该值指示是否对应用程序域中的互操作调用禁用接口缓存,以便对每个调用执行QueryInterface。

但是--为什么想要禁用QueryInterface的缓存?

(一个快速的谷歌找不到任何能解释这条路的东西?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-20 19:24:40

在典型的操作中,通常没有理由担心QueryInterface调用被缓存。

但是,其他各方可以创建组件,在这些组件中,未完成接口的数量与组件的操作相关联。此外,还有一些异常值,其中从COM对象接收的接口有一个实现,这可能会使控制对象的生存期变得更加困难。

例如,用ATL编写的组件可以使用tearoff接口创建。这些分离在主对象的二进制布局中不可用,通常是在与其父对象协调的另一个隐藏对象上实现的。由于成功的QueryInterface调用隐式地算作AddRef调用,如果缓存接口引用,则可以延长tearoff提供程序的生存期。此外,还可能存在这样一种情况,即对象只提供特定接口的一个分离,目的是一次只有一个使用者通过该接口。如果当第二个请求失败时向两个使用者发出相同的副本,则缓存副本可能会违反该行为。

最后,更有可能的情况是,为了调试或日志记录目的,可能会跟踪每个QueryInterface调用。能够关闭缓存可能会让人诊断问题,哪些问题可能会随着缓存的启动而延迟。

下面是一些关于tearoff接口的链接,供您参考。

ATL撕掉接口@ CodeGuru

CComTearOffObject类@ MSDN

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1595942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档