簡體   English   中英

Async Await Method將在等待點阻止UI

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM