Lors de la définition d'une classe COM visible en C++ je peux définir le modèle de thread pris en charge dans le fichier d'en-tête (la ligne threading(single)
):Comment marquer des objets .NET exposés à COM-interop comme thread unique?
[
coclass,
default(IComInterface),
threading(single),
vi_progid("Example.ComClass"),
progid("Example.ComClass.1"),
version(1.0),
uuid("72861DF5-4C77-43ec-A4DC-ED04396F0CCD")
]
est-il un moyen comparable de fixer le modèle de thread dans .NET (pour exemple un attribut)? Je définis actuellement mon COM-classe en tant que tel:
[Guid("67155A91-2948-43f5-B07F-5C55CDD240E5")]
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IComInterface
{
...
}
[Guid("DC5E6955-BB29-44c8-9FC0-6AADEEB2AFFB")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("Example.ComClass")]
public class ComClass : IComInterface
{
...
}
--edit:
Les commentaires sur la réponse marquée sont la chose vraiment importante. Il semble que la seule façon de dire à RegAsm de définir un ThreadingModel différent est d'écrire une méthode d'enregistrement personnalisée marquée avec l'attribut [ComRegisterFunction]
.
Je pense que l'OP ne parle pas des attributs MIDL. http://msdn.microsoft.com/de-de/library/zfbxt3zs.aspx – Henrik
Vous avez raison. Cela ne change pas ma réponse. –
Je viens de vérifier le registre et la valeur actuelle de ThreadingModel est "Both", ce qui n'est pas celui que je recherche. N'existe-t-il pas une autre façon de définir le ThreadingModel en plus d'enregistrer manuellement les classes COM en utilisant une méthode marquée avec [ComRegisterFunction]? – Xperimental