Ich habe den folgenden Code,Wie Async Files.ReadAllLines und warten auf Ergebnisse?
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
eine Tonne von Worten hat, die ich in das s-Variable gelesen, ich versuche Verwendung von async
und await
Schlüsselwort in C# 5 mit Async CTP Library
so die WPF-Anwendung zu machen doesn nicht hängen. Bisher habe ich den folgenden Code haben,
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;
}
Das Ziel ist es, die Datei in async anstatt sync zu lesen, das Einfrieren von WPF-Anwendung zu vermeiden.
Jede Hilfe wird geschätzt, Danke!
Wie wäre es mit Start durch Entfernen des unnötigen Aufrufs ToList(), die eine Kopie des String-Array machen wird? –
@JbEvain - Um pedantisch zu sein, 'ToList()' kopiert nicht nur das Array, es erstellt eine 'List'. Ohne weitere Informationen kann man nicht davon ausgehen, dass es unnötig ist, da "' '' '' '' '' '' '' s etwas mit '''' 'List''-Methoden nennt. – Mike