LoadState中的异步调用阻塞UI线程

LoadState中的异步调用阻塞UI线程

问题描述:

在我的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

我使用SQLite库,并没有使用它的异步方法。

因此,所有数据库操作最终阻止了ui线程。

我解决我的问题,通过使用