我的视图模型中有一个布尔属性,它绑定到我视图中的属性。当该属性更改为true时,我希望在不阻塞UI线程的情况下进行服务调用,这样我的视图就可以继续工作。到目前为止,我已经:
private bool _isLoadingAnimationVisible = true;
public bool IsLoadingAnimationVisible
{
get { return _isLoadingAnimationVisible; }
set
{
_isLoadingAnimationVisible = value;
if (IsLoadingAnimationVisible)
{
Task t = new Task(() => { LoadStuff(SelectedSomething.Id, SelectedDate, false); });
t.Start();
}
RaisePropertyChanged("IsLoadingAnimationVisible");
}
}我不认为LoadStuff方法很重要,但是这个任务t目前正在阻塞我的UI线程。我想知道是否有一种在保持UI线程自由的同时执行线程t的方法。
发布于 2014-08-07 09:36:51
你能做到的
if (IsLoadingAnimationVisible)
{
new Thread(delegate() {
LoadStuff(SelectedSomething.Id, SelectedDate, false);
}).Start();
}确保您没有从LoadStuff更新UI。
发布于 2014-08-07 09:38:24
尝试:
await Task.Factory.StartNew<bool>(()=>{get the bool})您需要等待一个任务才能成为异步任务。这个工厂是一种干净的方法。
https://stackoverflow.com/questions/25179037
复制相似问题