异步尝试 WPF 阻止



我正在学习async/await关键字。我看不到我在这里写的语法上在做什么?

我有以下两种方法:

private async Task<string> PopupAsync()
{
  String result;
  using (StreamReader reader = File.OpenText(@"C:tempJBM_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 线程冻结,我不希望它冻结。试图了解为什么以及如何修复。

谢谢!

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

最新更新