【发布时间】:2013-02-18 18:48:15
【问题描述】:
在我的 Windows 8 应用程序中,我正在覆盖 Page´s LoadState 将其设置为异步并使用它来下载和解析我等待的任务中的数据。之后我将这些数据绑定到 GridView。
虽然我的处理应该异步运行,但在我处理该任务期间所有 ui 都被阻止。
public class Example
{
// ...
protected override async void LoadState( . . . )
{
await Task.Run(() => downloadAndParseData());
// Update the UI with results
}
private async Task downloadAndParseData()
{
// ...
}
// ...
}
有谁知道为什么会这样以及我如何能够解决它?
【问题讨论】:
-
如果
downloadAndParseData已经返回了一个任务,为什么还要使用Task.Run()? -
您能否编辑您的问题以包含简短但完整的问题示例?
downloadAndParseData()中可能存在导致阻塞的内容。另外,您确定问题出在这段代码中,而不是其他地方吗? -
如果您的 downloadAndParseData 方法正在执行大量 UI 更新,这可能会使您的 UI 出现“阻塞”...
-
@NicoSchertler 我按照msdn.microsoft.com/en-us/library/windows/apps/hh994635.aspx 上的示例进行操作,按照您的问题,我想没有必要?
-
@PeterRitchie 之后我会进行所有 UI 更新。但我会仔细检查。
标签: c# microsoft-metro winrt-xaml windows-store-apps async-await