我的viewmodel中有一个布尔属性,它绑定到我视图中的属性。当此属性更改为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方法很重要但是这个任务目前正在阻止我的UI线程。我想知道是否有办法在保持UI线程空闲的同时执行线程t。
答案 0 :(得分:0)
你可以做到
if (IsLoadingAnimationVisible)
{
new Thread(delegate() {
LoadStuff(SelectedSomething.Id, SelectedDate, false);
}).Start();
}
确保您没有从LoadStuff
更新用户界面。
答案 1 :(得分:0)
尝试:
await Task.Factory.StartNew<bool>(()=>{get the bool})
您需要等待任务才能使其异步。工厂是一个干净的方式。