0

在我的Windows 8app中,我重寫Page的LoadState將其設置爲異步,並使用它來下載和解析我等待的任務中的數據。之後我將這些數據綁定到一個GridView。LoadState中的異步調用阻塞UI線程

雖然我的處理應該是異步運行,但是在處理該任務期間,所有用戶界面都會被阻止。

public class Example 
    { 
     // ... 
     protected override async void LoadState(. . .) 
     { 
      await Task.Run(() => downloadAndParseData()); 
      // Update the UI with results 
     } 

     private async Task downloadAndParseData() 
     { 
      // ... 
     } 
     // ... 
    } 

有沒有人有一個想法,爲什麼這是我怎麼能解決它?

+1

爲什麼你使用SQLite的提供異步方法'Task.Run()''如果已經downloadAndParseData'返回一個任務是什麼? – 2013-02-15 13:08:49

+2

您可以編輯您的問題以包含簡短但完整的問題示例? ''downloadAndParseData()'可能會導致阻塞。另外,你確定問題出在這個代碼中,而不是其他地方? – svick 2013-02-15 13:48:25

+0

如果你的downloadAndParseData方法做了很多的UI更新,這可能會讓你的用戶界面顯示「被阻止」... – 2013-02-15 15:38:51

回答

0

我使用SQLite庫,並沒有使用它的異步方法。

因此,所有數據庫操作最終阻止了ui線程。

我解決我的問題,通過使用