Ich habe den folgenden Code, der einen Dialog öffnet, um dem Benutzer anzuzeigen, dass die Anwendung in einem anderen Thread verarbeitet, der das Fenster dann schließt, sobald es das LoadCompletedEvent empfängt. Allerdings bekomme ich immer den folgenden Fehler und bin mir nicht sicher, worauf genau es sich bezieht.WPF System.Reflection.TargetParameterCountException Parameter count mishmatch
An unhandled exception of type 'System.Reflection.TargetParameterCountException' occurred in PresentationFramework.dll
Additional information: Parameter count mismatch.
So wird der Thread erstellt.
Thread thread = new Thread(() =>
{
MetroProgressWindow metroProgressWindow = new MetroProgressWindow(this);
metroProgressWindow.ShowDialog();
});
thread.SetApartmentState(ApartmentState.STA);
//thread.IsBackground = true;
thread.Name = "omega-thread";
thread.Start();
// create window, do loading, business logic, etc
// throw load completed event
LoadCompletedEvent(this, EventArgs.Empty);
Visibility = Visibility.Hidden; // hide MainWindow
renderWindow.ShowDialog(); // show the RenderWindow as a modal dialog NOTE: this is thread blocking
Und dann in dem anderen Fenster Code sieht so aus.
public partial class MetroProgressWindow : MetroWindow
{
public MetroProgressWindow(IOmegaWindow window)
{
InitializeComponent();
window.LoadCompletedEvent += delegate
{
Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new Action(() => { this.Close(); }),
null);
};
}
}
Ich nehme an, Sie verwenden MahApps? – lokusking
Ich benutze MahApps. das neue Objekt [2] hat nicht funktioniert, aber beim weiteren Debuggen scheitert es an metroProgressWindow.ShowDialog(); das keine Argumente benötigt – jkratz55
Die Tatsache, dass ShowDialog keine Argumente annimmt, ist völlig irrelevant: Es aktiviert die Logik des Fensters, wo das Problem ist, dass Action keine Parameter erwartet. –