I次のコードは、 Files.ReadAllLinesを非同期化して結果を待っていますか?
private void button1_Click(object sender, RoutedEventArgs e)
{
button1.IsEnabled = false;
var s = File.ReadAllLines("Words.txt").ToList(); // my WPF app hangs here
// do something with s
button1.IsEnabled = true;
}
Words.txt
Async CTP Library
を使用してC#で
async
と
await
キーワードを使用するようにしようとしています、私はsの変数に読み込む言葉のトンを持っていハングアップしません。これまでのところ、私は次のコードを持って、
private async void button1_Click(object sender, RoutedEventArgs e)
{
button1.IsEnabled = false;
Task<string[]> ws = Task.Factory.FromAsync<string[]>(
// What do i have here? there are so many overloads
); // is this the right way to do?
var s = await File.ReadAllLines("Words.txt").ToList(); // what more do i do here apart from having the await keyword?
// do something with s
button1.IsEnabled = true;
}
目標は、WPFアプリの凍結を避けるために、というよりも、同期、非同期にファイルを読むことです。
ありがとうございました。
文字列配列のコピーを作成するToList()への不要な呼び出しを削除することから始めるのはどうでしょうか? –
@JbEvain - 児童のために、ToList()は配列をコピーするだけではなく、 'List'を作成します。それ以上の情報がなければ、おそらく '' // do something with s'は '' List'メソッドを呼び出すので、その不要なものを仮定することはできません。 – Mike