2016-10-04 55 views
0

我想更新函数开始处的忙指示符。 仅当功能完成时才执行绑定。绑定WPF不立即执行

private async void DoJob() 
{ 
    await Task.Run(() => SetBusyIndicatorState(true)); 

    var res = await (LongFunction()); 
    ... 

    await Task.Run(() => SetBusyIndicatorState(false)); 
} 

private void SetBusyIndicatorState(bool state) 
{ 
    Application.Current.Dispatcher.BeginInvoke(new Action(() => 
     { 
      RadBusyIndicatorLoad.IsBusy = state; 
     })); 
} 
+0

当我执行该功能我没有看到繁忙指示符,因为结合在端执行(等待Task.Run(()=> SetBusyIndi​​catorState(假));) – leapold

回答

0

将您的方法标记为异步并等待执行完成。

 SetBusyIndicatorState(true); 

    Task.Run(() => 
    { 
     //implement 
    }).ContinueWith(completedtaskresult=> 
    { 
     SetBusyIndicatorState(false) 
    }, TaskScheduler.FromCurrentSynchronizationContext()); 
+0

我可以因为我不接收消息(调用线程不能访问这个对象,因为不同的线程拥有它)。 LongFunction()内部运行其他任务 – leapold