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

时间:2013-02-15 11:23:54

标签: c# microsoft-metro winrt-xaml windows-store-apps async-await

在我的Windows 8应用程序中,我重写了Page的LoadState,将其设置为异步,并使用它来下载和解析任务中的数据。然后我将这些数据绑定到GridView。

虽然我的处理应该是异步运行,但在我对该任务进行处理时会阻止所有ui。

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

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

有谁知道为什么会这样,我怎么能解决它?

1 个答案:

答案 0 :(得分:0)

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

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

我使用SQLite提供的异步方法解决了我的问题