未调用任务后的代码

时间:2014-02-25 10:21:53

标签: c# wpf asynchronous scheduled-tasks task

场景是我有文本框,当用户

时我把URL放在那里

输入网址并按下go我在服务时调用TPL中的服务

加载我需要启用下一个按钮(我正在处理向导)如果我不使用TPL IsServicevalid get true(绑定到命令)并启用下一个按钮。但在任务(TPL)中加载数据并且下一个是禁用的(即使我把它放在继续中)我注意到如果我在下一轮启用的任何地方用鼠标点击页面,你会遇到这样的问题吗?

即使下一个按钮被禁用,我点击它就会启用,所有这一切都会发生

当我使用任务时,任何想法?

这很奇怪...... :(

Task.Factory
    .StartNew(() =>
    {
        //-----get service Data ---------
        try
        {
            GetUsersData();
        }
        catch (Exception e)
        {
            _isValid = false;
            ThrowErrorMessage(e.Message);
        }
    })
    .ContinueWith((task) =>
    {
        Mouse.OverrideCursor = null;
    }, System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());

    isServiceValid = true;

1 个答案:

答案 0 :(得分:2)

有时命令的CanExecute状态不会反映在ui上,直到你点击它为止。

我不知道为什么会发生这种情况,我个人认为这是一种应该在框架内自行更改的行为。

但是,您可以通过调用

强制更新
System.Windows.Input.CommandManager.InvalidateRequerySuggested();