0

async/await キーワードについて学んでいます。私が何をしているのか見えない 構文的にここに書いた?

次の2つの方法があります。

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 に答える