WPF可以执行和ThreadPool



我的应用程序执行一个webservice调用,当它发生时,isexecution状态被设置为true,执行按钮被禁用。由于应用程序在此期间没有响应,因此我更改了进程,以便在单独的线程中执行。然而,我现在注意到的问题是,执行按钮仍然被禁用,只有当我点击界面按钮才能启用。我怎样才能解决这个问题?

编辑:在后台代码:

private void Execute()
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(ExecuteThread));
}
private bool CanExecute
{
    get  { return !IsExecuting; }
}
private void ExecuteThread(Object o)
{
    IsExecuting = true;
    // Process execution here ...
    IsExecuting = false;
}

In Xaml:
<Button Content="Execute" Command="{Binding Path=ExecCommand}"/>

所以您需要刷新命令的CanExecute状态?只调用CommandManager.InvalidateRequerySuggested(),这将导致CanExecute在绑定命令时被重新求值。

我认为你应该贴一些代码来更好地理解你的问题。

我很确定这是一个线程问题,因为你不能从不同的线程改变一个控件的形式的状态。

我认为你所需要做的就是使用一个Delegate来从其他线程更新你的按钮状态

如何从c#中的另一个线程更新GUI ?

相关内容

  • 没有找到相关文章

最新更新