这是我的按钮事件:
private async void btnTarget_Click(object sender, EventArgs e)
{
using (DataBaseDataContext db = new DataBaseDataContext())
{
targtGirdView.DataSource = await Task.Run(() =>
{
return heavyLinqToSQLQuery;
});
}
}
对于我的GridView数据源,我有一个繁重的数据库事务,将该事务放在await部分中。但是此时,UI会阻塞,我不知道原因。问题出在哪里?
答案 0 :(得分:3)
您的LINQ查询应该是异步的。代码应该看起来像
private async void btnTarget_Click(object sender, EventArgs e)
{
using (DataBaseDataContext db = new DataBaseDataContext())
{
targtGirdView.DataSource = await heavyLinqToSQLQuery.ToListAsync();
}
}
答案 1 :(得分:3)
我刚刚通过在LINQ查询末尾添加.ToList();
解决了我的问题:
private async void btnTarget_Click(object sender, EventArgs e)
{
using (DataBaseDataContext db = new DataBaseDataContext())
{
targtGirdView.DataSource = await Task.Run(() =>
{
return heavyLinqToSQLQuery.ToList();
});
}
}
但是我不知道为什么它现在可以正常运行而没有阻塞UI。与延迟加载有关吗?