In einer WPF 4.5-Anwendung, ich verstehe nicht, warum die UI blockiert wird, wenn ich await verwendet + eine neue Aufgabe:Meine async Aufgabe immer Blöcke 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;
}
Das erwarten Task.Delay funktioniert gut, aber die Warten Sie, bis JobAsync die Benutzeroberfläche blockiert. Warum ? Danke.
Anstatt dem Start der Aufgabe absorbieren sie mehr machen könnte Sinn, einen 'Task.Run'-Aufruf in der Zeile mit' wartet 'hinzuzufügen, obwohl das Endergebnis (wenn die Funktion nie wieder verwendet wird) identisch ist. – Servy
Ich bin in einem ähnlichen Szenario, blockiert immer noch den UI-Thread. Gibt es offensichtliche Fallstricke? – IbrarMumtaz