In WPF 4.5 applicazione, non capisco il motivo per cui l'interfaccia utente è bloccato quando ho usato await + un compito:mio asincrona Task sempre blocchi 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;
}
La attendono Task.Delay grandi opere, ma la Attendere JobAsync blocca l'interfaccia utente. Perché ? Grazie.
Invece di iniziare il compito all'interno del metodo potrebbe avere più senso di aggiungere una chiamata 'Task.Run' sulla linea con' await', anche se il risultato finale (se la funzione non viene mai riutilizzata) è identico. – Servy
Im in uno scenario simile, blocca ancora il thread dell'interfaccia utente. Ci sono trucchi ovvi? – IbrarMumtaz