异步尝试WPF阻止

时间:2013-09-16 22:10:15

标签: wpf asynchronous async-await

我正在学习async / await关键字。我无法在语法上看到我在做什么?

我有以下两种方法:

private async Task<string> PopupAsync()
{
  String result;
  using (StreamReader reader = File.OpenText(@"C:\temp\JBM_SchedulingModule.xap"))
  {
    Console.WriteLine("Opened file.");
    txtData.Text = "Opened file.";
    result = await reader.ReadToEndAsync();

  }
  return result;
}

private async void Button_Click(object sender, RoutedEventArgs e)
{
  txtData.Text = await PopupAsync();
}

当我按下按钮并且我不希望它时,主UI线程冻结。试图了解为什么以及如何解决。

谢谢!

1 个答案:

答案 0 :(得分:0)

斯蒂芬是对的。我想到了。它确实有效。阻塞的原因不是因为ReadToEndAsync(),而是填充+加载4MB字符串(从文件)到WPF控件所花费的时间。