0

我正在学习 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 线程冻结。试图了解为什么以及如何解决。

谢谢!

4

1 回答 1

0

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

于 2013-09-19T15:14:57.397 回答