2010-05-11 4 views
4

J'ai une application .net 4 qui utilise une DLL COM pour envoyer des messages SMS. J'ai utilisé TlbImp pour créer l'assembly interop et c'est ce qui est référencé dans l'application..Net Com Interop Créer une instance lente

Lorsque j'essaie de créer une instance de cette classe, cela prend beaucoup de temps (2-5 secondes). J'ai exécuté le profil de performance dans VS 2010 et l'appel le plus long est System.Activator.CreateInstance().

Je suis à la recherche de conseils sur la façon de déboguer ou obtenir gotchas avec Com Interop.

+0

quel est le temps de chargement dll sans utiliser .net – volody

Répondre

2

De quel type d'appartement COM correspond le fil sur lequel vous créez l'objet?

Si c'est votre fil d'application principal et que vous ne marquez pas votre point d'entrée principal avec le STAThreadAttribute, vous serez exécuté dans un MTA. Si vous utilisez l'attribut, votre thread sera dans une STA. Pour les autres threads, vous pouvez définir le type d'appartement en utilisant Thread.SetApartmentState avant de démarrer le thread. Si votre objet COM est enregistré avec un modèle d'appartement différent de celui que vous utilisez, vous encourez la surcharge d'un nouveau thread/appartement en cours de création, l'objet étant créé dans cet autre appartement, et toutes les communications se produisant via proxy/stubs plutôt que des invocations directes sur l'objet COM.

Cela pourrait causer des problèmes de performance.

Questions connexes