信息: 未生成阻止从一个 STA 组件的调用

文章翻译 文章翻译
文章编号: 291837 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

当您进行阻止来自您居住在一个单线程单元 (STA) 实时的 STA 正在等待您解除阻止该单元的实例的其他所有 COM 实例中的组件对象模型 (COM) 对象实例调用。如果希望阻止从一个组件调用则建议您将从其线程模型是闲组件在阻塞调用。

调用被视为阻止如果所用的时间长或不确定要返回的时间量,例如呼叫,使用远程过程调用 (RPC) 的网络调用后端或套接字。

此外,Microsoft Visual Basic 只能创建 STA 应用程序和组件的线程模型是单元或丢失。因此,您不应使阻塞调用从 Visual Basic 中编写的组件。

更多信息

组件的线程模型是单元居住在单线程单元 (STA)。多个 COM 对象实例可以驻留在同一 STA 中但是,则只能有一个线程 (因此名称) 的服务在该单元中的所有 COM 对象实例。如果进行了阻止来自这些 COM 对象实例的一个调用其他 COM 对象的实例被缺少由于唯一可以处理它们的线程被阻止。

您应使阻塞调用从具有的自由线程处理模型的组件。此组件位于多线程单元 (MTA) 中。在 STA,多个 COM 对象实例可以存在于此 MTA。但是,MTA 有多个线程的 COM 对象实例提供服务的。如此一来时此 COM 对象实例进行阻止调用,其他线程可以服务的其他 COM 对象的实例。这些线程可以甚至在 COM 对象的服务实例进行阻塞的调用。因此,在 MTA 线程安全使您的实时的组件,您应保护与同步对象的全局数据。

从 STA 的 COM 对象实例的居住在 MTA 和这样阻塞调用一个 COM 对象实例上调用方法时, 不会阻止 STA 组件。这是因为当 STA 组件通过 COM 代理服务器呼叫,代理发送关闭数据到 MTA 和 COM 泵消息 STA 中,以便它可以进行其单元中的其他工作。(在一个 STA 单元中的工作到达时窗口消息通过中)。MTA 中不同的线程拾取 COM 调用,通过该存根 (stub),并使这反过来会使有效地将处于"等待"状态的线程将阻止呼叫在 COM 对象实例上调用该方法。阻塞的调用返回时, COM 方法完成其工作,并将数据返回到存根数据返回到窗口消息通过代理服务器。在 STA 线程中的代理拾取窗口消息中数据,并将其发送回调用的组件。

在一个 STA 中的多长时间阻塞调用另一个副作用是 RPC 通信与通过窗口邮件 STA。阻塞调用阻碍了与任何其他潜在的窗口消息一起可能属于该线程的通信。

参考

COM 线程处理的其他信息,请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
136885信息: OLE 线程必须配送信息
有关分布式 COM (DCOM) 体系结构的详细信息,请参阅下面的 Microsoft 平台软件开发工具包 (SDK) 文档:
http://msdn.microsoft.com/en-us/library/ms809311.aspx

属性

文章编号: 291837 - 最后修改: 2001年7月12日 - 修订: 1.3
这篇文章中的信息适用于:
  • Microsoft COM+ 2.0 Standard Edition
关键字:?
kbmt kbclientserver kbinfo kbinprocsvr kbthread KB291837 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 291837
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com