System.Win.ComObj.TThreadingModel

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

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

C++

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

Propriétés

Type Visibilité  Source Unité  Parent
enum public
System.Win.ComObj.pas
System.Win.ComObj.hpp
System.Win.ComObj System.Win.ComObj

Description

TThreadingModel indique comment COM sérialise les appels d'un objet COM.

ThreadingModel détermine comment COM sérialise les appels d'un objet COM. L'application doit vérifier que l'implémentation de l'objet COM peut gérer en toute sécurité le modèle de thread spécifié.

Le tableau suivant énumère les valeurs TThreadingModel possibles :



Valeur Signification

tmSingle

COM sérialise toutes les requêtes des clients. L'objet n'a pas besoin de gérer les threads.

tmApartment

COM vérifie que chaque instance de l'objet COM traite une requête à la fois. Différents objets du même serveur peuvent être appelés dans différents threads, mais chaque objet est appelé uniquement depuis ce seul thread. Les données d'instance sont préservées, les données globales doivent être protégées en utilisant des sections critiques ou une autre forme de sérialisation. Les variables locales du thread sont utilisables sur plusieurs appels.

tmFree

Appelé aussi installation multi-thread. L'objet COM peut recevoir des appels de plusieurs threads en même temps. Les objets doivent protéger toutes les instances et les données globales en utilisant des sections critiques ou une autre forme de sérialisation. Les variables locales de thread ne sont pas utilisables sur plusieurs appels.

tmBoth

Les objets peuvent gérer des clients qui utilisent un modèle de thread libre ou installé. Ils gère les deux modèles de thread quand les clients peuvent utiliser des modèles de thread simple ou libre.

tmNeutral

Plusieurs clients peuvent appeler l'objet sur différents threads en même temps, mais COM assure qu'il n'y a pas de conflit entre deux appels. Vous devez éviter les conflits de threads impliquant des données globales et toutes les données d'instance accédées par plus d'une méthode. Ce modèle ne doit pas être utilisé avec des objets ayant une interface utilisateur. Ce modèle est disponible uniquement sous COM+. Sous COM, il est équivalent au modèle Appartement.