Ich habe eine Anwendung mit der Möglichkeit, einige Plugins (dll's) zu laden. Es ist auf WPF arbeiten. Das Problem ist Verzögerungen, wenn Plugin UI-Steuerelemente erstellt.
In der Hauptanwendung habe ich einige Steuerelemente. Ich übergebe diese Referenzen an das Plugin. Wenn ich die Show()-Methode des Plugins aufrufe, muss er spezielle UI-Steuerelemente zu meiner Hauptanwendung hinzufügen.
Wie kann ich die UI-Steuerelemente des Plugins im Hintergrund-Thread erstellen und sie in die Hauptanwendung einfügen, wenn der UI-Thread der Hauptanwendung keinen Zugriff auf die Steuerelemente hat, die in einem anderen Thread erstellt wurden?
Ich verwende diesen Code in der Hauptanwendung:
if (!module.IsInitialized())
{
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, new Action(
delegate()
{
module.InitializeComponents();
module.ShowModule();
}
));
}
wo die Plugin-Initialisierungsmethode ist:
public void InitializeComponents()
{
MyBodyArea = new SERPBodyArea(); // there is UI control
MyBottomArea = new SERPBottomArea(); // there is UI control
MyHeaderRibbon = new SERPXamRibbon(); // there is UI control
_IsInitialized = true;
}
Wenn das Plugin also UI-Steuerelemente erstellt, wird meine Hauptanwendung eingefroren. Gibt es eine Möglichkeit, es im Hintergrund-Thread zu erstellen und es zum Hauptanwendungsfenster hinzuzufügen?
Danke. Und sorry für mein schlechtes Englisch :(.