Ich habe eine Anwendung in WPF mit dem MVVM-Muster erstellt.WPF exe läuft sehr langsam im Vergleich zur Ausführung in Visual Studio
Die Anwendung läuft gut im Visual Studio-Debugger, aber wenn ich die Exe aus dem Debug/Release-Ordner ausführen, wird es sehr langsam.
Hier meine RelayCommand
Klasse:
public class RelayCommand : ICommand
{
private readonly Action<object> execute;
private readonly Predicate<object> canExecute;
public RelayCommand(Action<object> execute) : this(execute, DefaultCanExecute)
{
}
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
this.execute = execute;
this.canExecute = canExecute;
}
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
[DebuggerStepThrough]
public bool CanExecute(object parameter)
{
bool res = false;
if (canExecute != null)
{
res = canExecute(parameter);
}
return res;
}
public void Execute(object parameter)
{
execute(parameter);
}
private static bool DefaultCanExecute(object parameter)
{
return true;
}
}
Wenn ich die CanExcecute()
Methode aus meiner RelayCommand
Klasse entfernen, dann läuft die exe-Version als normal.
Bitte kann jemand erklären, warum dieses Ding passiert? Handelt es sich um den Ereignishandler CanExecuteChanged
?
Schwer zu sagen, wir wissen nicht, welche Art von Logik, die Sie in CanExecute laufen. Erstellen Sie eine [MCVE] –
@HenkHolterman Ich überprüfe eine Eigenschaft aus der Datenbank, ich denke, dass das Abrufen das Problem ist. Wenn ich nur wahr von dieser CanExcecute-Methode zurückgebe, funktioniert die Exe einwandfrei. – sushmitgos
Wenn ich einfach Sammlung ohne db abrufen bin, funktioniert es gut :) – sushmitgos