System.Win.ComObj.TThreadingModel
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 の場合は,アパートメントモデルにマップされます。 |