我已經使用MVVM模式在WPF中創建了一個應用程序。與在Visual Studio中運行相比,WPF EXE運行速度非常慢
該應用程序在Visual Studio調試器中運行良好,但是當我從調試/釋放文件夾運行該exe時,它變得非常緩慢。
這裏是我RelayCommand
類:
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;
}
}
如果我從我的RelayCommand
類別中刪除CanExcecute()
方法,那麼EXE版本的運行是正常的。
請任何人都可以解釋爲什麼這件事情發生?是否爲CanExecuteChanged
事件處理程序?
很難說,我們不知道你在CanExecute運行什麼樣的邏輯。創建一個[MCVE] –
@HenkHolterman我正在檢查數據庫的一些屬性,我認爲提取是問題。如果我只是從該CanExcecute方法返回true,該exe工作正常。 – sushmitgos
如果我只是迭代拋出集合而不提取數據庫它工作正常:) – sushmitgos