Meilleur auteur de réponses
System.Addin : Bon choix pour une application modulaire ?

Question
-
Bonjour à tous.
Je développe actuellement en c# sous Visual Studio Pro 2008 (.net 3.5), le tout en WPF.
Je souhaite créer une application permettant d'accueillir des plugins qui seront hosté dans mon application.
Chaque plugins comporte une interface graphique devant être chargé dans l'hôte.
Ma question est la suivante, le mieux est-il d'utilisé les domaines d'applications et de charger les assembly ou de passer par le nouveau système de gestion des Addins (System.Addin) ?
Merci d'avance pour les réponses que vous pourrez m'apporter.
Bonne journée à tous.
Réponses
Toutes les réponses
-
-
Bonjour,
Merci pour votre réponse, j'ai testé le système de gestion des Addins et le chargement directement via createInstance (domaine d'application), et j'ai remarqué que le chargement d'une interface graphique (contenu dans mon assembly) est plus lent avec la bibliothèque System.Addin.
Concernant la possibilité de cloisonner, tu as peut être une adresse à me donner sur le sujet ?
Merci d'avance. -
Bonjour,
Il me semble que c'est la méthode AddInToken.Active(AppDomain) :
http://msdn.microsoft.com/fr-fr/library/bb298165.aspx
qui permet de mettre les add-ins dans différents AppDomain et de réaliser votre propre cloisonnage...
Cordialement
-
Bonjour,
Merci pour ton aide.
Juste une dernière question, j'ai remarqué que chargé que chargé un FrameWorkElement (UI) est très long.
Je cherche donc un moyen d'accélérer ce chargement ou de le faire de façon asynchrone.
J'ai essayé les threads mais le problème c'est qu'un élèment graphique ne peut pas être chargé depuis une autre thread (Thread safe).
Merci d'avance. -
-
Bonjour et merci pour votre réponse.
Je m'excuse pour le temps de réponse j'étais en vacance.
Donc j'ai essayé ce que vous m'avez proposé, le problème est qu'il sagit de chargement d'interface graphique (UI) donc il ne peut pas être fait dans une thread différente de celle ou il va être appelé.
Il a donc naturellement provoqué une exception avec le message suivant :
"Le thread appelant doit être en mode STA, comme l'exigent de nombreux composants de l'interface utilisateur."
En tout cas merci pour votre réponse.
Bonne journée. -
-
Bonjour,
Merci pour votre réponde rapide.
Oui j'ai bien mis STAThread mais ça marche quand même pas.
Je crois savoir que quoi qu'il arrive il faut qu'une interface graphique soit chargé par la thread appelante, donc impossible d'utiliser les backgroundWorker ou thread etc ...
Merci pour vos réponses.
Cordialement