Creé un objeto COM en .NET y lo registré como una aplicación de servidor COM + con Pooling = 1 usando regsvcs
. Actualmente estoy buscando un error y, por lo tanto, necesito asegurarme de que este objeto COM se ejecuta en STA, no en MTA. ¿Cómo puedo especificar esto?
Cualquiera de los siguientes me ayudará:Especifique el estado del apartamento que se utilizará al crear instancias fuera del objeto COM de proceso
- un ajuste en el complemento Servicios de componentes en
- Un fragmento de configuración/código que hace que el objeto COM para permitir sólo STA y no los dos
- Un ajuste/fragmento de código en C# en el lado del llamante que le dice a COM + que el objeto COM debe ser inicializado con STA
actualización:
he intentado cambiar manualmente el ThreadingModel
entrada en el registro de Both
a Apartment
. Esto no ayuda tampoco, porque cuando intento crear una instancia del objeto COM, consigo un COMException (0x80110802) y el visor de sucesos dice:
El modelo de hilos del componente especificado en el registro es incompatible con el base de datos de registro. El componente defectuoso es:
<
MyComponent>
¿Hay algún otro lugar que necesito para cambiar el modelo de hilos? Por ejemplo, en esa "base de datos de registro"? ¿Dónde puedo encontrarlo?
Gracias!
No es suficiente, solo funciona si el coclass se registró antes. Considere RegistrationServices.RegisterTypeForComClients() para obtener primero las claves básicas en su lugar. –