System.Win.ComObj.TThreadingModel

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

TThreadingModel = (tmSingle, tmApartment, tmFree, tmBoth, tmNeutral);

C++

enum DECLSPEC_DENUM TThreadingModel : unsigned char { tmSingle, tmApartment, tmFree, tmBoth, tmNeutral };

プロパティ

種類 可視性 ソース ユニット
enum public
System.Win.ComObj.pas
System.Win.ComObj.hpp
System.Win.ComObj System.Win.ComObj

説明

TThreadingModel は,COM が COM オブジェクトの呼び出しをどのようにシリアル化するかを示します。

ThreadingModel は,COM オブジェクトの呼び出しを COM がどのようにシリアル化するかを決めます。アプリケーションは,COM オブジェクトの実装が指定したスレッドモデルを安全に処理できることを保証する必要があります。

次の表に TThreadingModel に指定できる値を示します。



意味

tmSingle

COM はすべてのクライアントリクエストをシリアル化します。オブジェクトはスレッドサポートを提供する必要がありません。

tmApartment

COM は,COM オブジェクトのすべてのインスタンスが一度に 1 つのリクエストを提供することを保証します。同一のサーバーからの異なるオブジェクトは異なるスレッドで呼び出すことができるが,各オブジェクトは 1 つのスレッドからのみ呼び出されます。インスタンスデータは保証され,グローバルデータはクリティカルセクションまたはほかの形式のシリアル化を使って保護されなければなりません。スレッドのローカル変数は,複数の呼び出し間で信頼されます。

tmFree

マルチスレッドアパートメントとも呼ばれます。COM オブジェクトはいつでも,どのスレッドからの呼び出しも受け取ることができます。オブジェクトはクリティカルセクションまたはほかの形式のシリアル化を使用してすべてのインスタンスおよびグローバルデータを保護する必要があります。スレッドのローカル変数は複数の呼び出し間で信頼されません。

tmBoth

オブジェクトはアパートメントまたはフリースレッドモデルを使用するクライアントをサポートできます。クライアントが単一スレッドまたはフリースレッドモデルを使用している可能性がある場合は両方のスレッドモデルをサポートします。

tmNeutral

複数のクライアントが,別々のスレッドで同時にオブジェクトを呼び出すことができるが,COM によって 2 つの呼び出しが競合しないことが保証されます。複数のメソッドでアクセスされるグローバルデータやインスタンスデータを巻き込んだスレッドの競合が起きないようにしなければなりません。このモデルはユーザーインターフェースを持つオブジェクトでは使ってはならなりません。このモデルは COM+ でのみ利用できます。COM の場合は,アパートメントモデルにマップされます。