Quando si definisce una classe COM-visibile in C++ posso definire il modello supportato threading nel file di intestazione (la linea threading(single)
):Come contrassegnare gli oggetti .NET esposti a COM-Interop come thread singolo?
[
coclass,
default(IComInterface),
threading(single),
vi_progid("Example.ComClass"),
progid("Example.ComClass.1"),
version(1.0),
uuid("72861DF5-4C77-43ec-A4DC-ED04396F0CCD")
]
Esiste un modo simile di impostare il modello di threading in .NET (per esempio un attributo)? Io attualmente definisco la mia COM-classe come tale:
[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:
I commenti sulla risposta marcata sono la cosa veramente importante. Sembra che l'unico modo per dire a RegAsm di impostare un diverso ThreadingModel è quello di scrivere un metodo di registrazione personalizzato contrassegnato con l'attributo [ComRegisterFunction]
.
Penso che l'OP non stia parlando degli attributi MIDL. http://msdn.microsoft.com/de-de/library/zfbxt3zs.aspx – Henrik
Hai ragione. Non cambia la mia risposta. –
Ho appena controllato il registro e il valore corrente per ThreadingModel è "Both", che non è quello che sto cercando. Non c'è un altro modo per impostare ThreadingModel oltre a registrare manualmente le classi COM usando un metodo contrassegnato con [ComRegisterFunction]? – Xperimental