Trong một ứng dụng WPF 4.5, tôi không hiểu tại sao giao diện người dùng bị chặn khi tôi sử dụng chờ đợi + một nhiệm vụ:async công tác tôi luôn khối UI
private async void Button_Click(object sender, RoutedEventArgs e)
{
// Task.Delay works great
//await Task.Delay(5000);
double value = await JobAsync(25.0);
MessageBox.Show("finished : " + value.ToString());
}
private async Task<double> JobAsync(double value)
{
for (int i = 0; i < 30000000; i++)
value += Math.Log(Math.Sqrt(Math.Pow(value, 0.75)));
return value;
}
Các chờ đợi Task.Delay hoạt động tuyệt vời, nhưng chờ đợi JobAsync chặn giao diện người dùng. Tại sao ? Cảm ơn bạn.
Thay vì bắt đầu nhiệm vụ bên trong các phương pháp đó có thể làm cho hơn ý nghĩa để thêm một cuộc gọi 'Task.Run' trên dòng với' await', mặc dù kết quả cuối cùng (nếu hàm này không bao giờ được sử dụng lại) là giống hệt nhau. – Servy
Im trong một kịch bản tương tự, vẫn chặn Chủ đề giao diện người dùng. Có bất kỳ gotchas rõ ràng? – IbrarMumtaz