[英]Async Await Method will block UI at await point
這是我的按鈕事件:
private async void btnTarget_Click(object sender, EventArgs e)
{
using (DataBaseDataContext db = new DataBaseDataContext())
{
targtGirdView.DataSource = await Task.Run(() =>
{
return heavyLinqToSQLQuery;
});
}
}
對於我的GridView數據源,我有一個繁重的數據庫事務,我把它放在await部分。 但在這一點上,UI將阻止,我不知道原因。 問題出在哪兒?
你LINQ查詢應該是異步的。 代碼應該看起來像
private async void btnTarget_Click(object sender, EventArgs e)
{
using (DataBaseDataContext db = new DataBaseDataContext())
{
targtGirdView.DataSource = await heavyLinqToSQLQuery.ToListAsync();
}
}
我剛剛通過添加.ToList();
解決了我的問題.ToList();
在我的LINQ查詢結束時:
private async void btnTarget_Click(object sender, EventArgs e)
{
using (DataBaseDataContext db = new DataBaseDataContext())
{
targtGirdView.DataSource = await Task.Run(() =>
{
return heavyLinqToSQLQuery.ToList();
});
}
}
但我現在還不知道為什么它在沒有阻止UI的情況下正常運行。 是否與延遲加載或什么相關?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.