1

大きなファイルをロードしてデータグリッドにデータを表示する必要がありますが、ファイルを非同期的にロードできない方法があります。

ボタンコード:

private async void MILoadLogFile_Click(object sender, RoutedEventArgs e) {
    ...
        await myLogSession.LoadfromFileAsync(oFD.FileName);
    }
}

および Load メソッド

public async Task LoadfromFileAsync(String fileName) {

    StreamReader streamReader = new StreamReader(fileName);

    String line;
    try {
        using (streamReader) {
            while ((line = await streamReader.ReadLineAsync()) != null) {

                ...
            }
            ...
        }
        Console.Out.WriteLine("DOOOOOOOOOOOOONE");
    }
    } catch (Exception e) {
        Console.WriteLine("The file could not be read:");
        Console.WriteLine(e.Message);
    }
}

}

これは機能しますが、まったくスムーズではありません。ウィンドウを移動できません

4

1 に答える 1

0

代わりにこれを使用してみてください:

private async void MILoadLogFile_Click(object sender, RoutedEventArgs e)
{
    //...
    await Task.Factory.StartNew(async () =>
    {
        await myLogSession.LoadfromFileAsync(oFD.FileName);
    });
}
于 2013-01-31T21:46:02.923 に答える