【发布时间】:2017-06-17 20:03:29
【问题描述】:
这是查询:
using (var db = new AppDbContext())
{
var items = await db.Branches
.Where(b => b.OrgId == orgId)
.Select(t => new SelectListItem<int> {Key = t.Id, Value = t.Name})
.ToListAsync();
return items;
}
如果我用ToList 替换ToListAsync,它运行良好,但否则它会挂起。我怀疑某种线程问题。该查询是在我的视图模型的 InitializeAsync 方法期间调用的,该方法是从视图中的“事件”调用的:
public override async void OnNavigatedTo(NavigationContext navigationContext)
{
await InitializeModelAsync(InitModelCts.Token);
}
这是INavigationAware 的视图实现的一部分。
【问题讨论】:
-
在这两种情况下检查 ThreadId。如果它们不同,则使用调度程序代替
-
这可能是因为
OnNavigatedTo从一开始就不是真正的async吗?我找到了this blog。
标签: c# wpf async-await prism