情報: は、STA コンポーネントからの呼び出しをブロックを作成しません。

文書翻訳 文書翻訳
文書番号: 291837 - 対象製品
すべて展開する | すべて折りたたむ

概要

ブロッキング呼び出しから、コンポーネント オブジェクト モデル (COM) オブジェクトのインスタンスは、シングル スレッド アパートメント (STA)、STA のアパートメントを解除するインスタンスを待っているという点でライブすべて他 COM のインスタンスで生活を作成するとき。 コンポーネントからのブロッキング呼び出しを行う必要がある場合は、ブロッキング呼び出しをスレッド モデルが空きコンポーネントから作成することをお勧めします。

呼び出しを返すの長いまたは中間の時間がかかる場合のブロックと見なされます、たとえば、バックエンド、リモート プロシージャ コール (RPC) を使用するネットワーク呼び出しへの呼び出しまたはソケットします。

さらに、STA のアプリケーションとコンポーネントをスレッド モデルがアパートメントか、不足している Microsoft Visual Basic のみ作成ことができます。 したがって、Visual Basic で記述されたコンポーネントからのブロッキング呼び出しを作成できません。

詳細

コンポーネントのスレッド モデルがアパートメント シングル スレッド アパートメント (STA) を作ってください。 複数の COM オブジェクトのインスタンスできます、同じ STA. を作ってください。 ただし、1 つのスレッドだけがあります (つまり名前) そのアパートメント内のすべての COM オブジェクト インスタンスをサービスします。 その COM オブジェクトのインスタンスのいずれかからブロッキング呼び出しする場合にできるサービスのみのスレッドがブロックされるため、他の COM オブジェクトのインスタンスは拒否します。

ブロッキング呼び出しを予定のスレッド モデルを持つコンポーネントからに設定します。 このコンポーネントは、マルチスレッド アパートメント (MTA) 内に存在します。 複数の COM オブジェクトのインスタンスは、STA で、MTA に住んでことができます。 ただし、MTA は、COM オブジェクトのインスタンスのサービスを複数のスレッド。 その結果、この COM オブジェクトのインスタンスが、ブロッキング呼び出しと、他のスレッド サービス、他の COM オブジェクトのインスタンスにできます。 これらのスレッドをブロッキング呼び出しを行うサービス、COM オブジェクト インスタンスもことができます。 したがって、MTA スレッド セーフで、ライブ コンポーネントには、グローバル データの同期オブジェクトを保護してください。

STA から、COM オブジェクトのインスタンスが、MTA の存在をしており、ブロッキング呼び出しが、COM オブジェクト インスタンスでメソッドを呼び出すと、STA コンポーネントはブロックされません。 これは、STA コンポーネントが COM プロキシを介して呼び出すと、プロキシを無効、および COM にポンプ メッセージ、STA でように送信そのアパートメントで他の作業が行えますためです。 (STA アパートメントでの作業到着ウィンドウ メッセージを介して。) MTA で別のスレッド、スタブを通じて COM 呼び出しをピックアップなり順番「待機」状態に、スレッドを効果的に配置、ブロッキングの呼び出しを行い、COM オブジェクト インスタンスに対して呼び出すメソッド。 ブロッキング呼び出しから戻ると、COM メソッドその作業を完了し、スタブは、ウィンドウ メッセージ経由のプロキシにデータを返すに、データを返します。 STA スレッドで、プロキシ、ウィンドウ メッセージ内のデータをピックアップし、呼び出し元のコンポーネントに送信します。

STA で長いブロッキング呼び出しの別の副作用は RPC をウィンドウ メッセージを使って、STA と通信することが。 ブロッキング呼び出し低下その通信任意の潜在的なウィンドウ メッセージと共にそのスレッドに属することがあります。

関連情報

COM スレッドの詳細についてをクリック資料以下、資料の「サポート技術情報」(Microsoft Knowledge Base) を表示します。
136885情報: OLE スレッド メッセージをディスパッチする必要があります。
分散コンポーネント オブジェクト モデル (DCOM) アーキテクチャの詳細については、次の Microsoft プラットフォーム ソフトウェア開発キット (SDK) ドキュメントを参照してください。
http://msdn.microsoft.com/en-us/library/ms809311.aspx

プロパティ

文書番号: 291837 - 最終更新日: 2001年7月12日 - リビジョン: 1.3
この資料は以下の製品について記述したものです。
  • Microsoft COM+ 2.0 Standard Edition
キーワード:?
kbinfo kbthread kbinprocsvr kbclientserver kbmt KB291837 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:291837
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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