나는 다음과 같은 코드가 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
키워드의 사용을 만들려고 노력하고 내가의 변수로 읽어 단어의 톤을 가지고 있습니다 멈추지 않아. 지금까지 나는 다음과 같은 코드를 가지고,
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