我已经使用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