Ich benutze async, warten auf die Benutzeroberfläche auf Schaltfläche klicken, um den Benutzer anzuzeigen, dass einige Fortschritte vor sich gehen und ich Lade-Panel onclick Schaltfläche anzeigen. Unten ist mein Code:Xamarin.Forms Aktualisierung UI-Thread verhält sich merkwürdig in iOS & Android
Android:
async void loginButtonGesture_Tapped(object sender, EventArgs e)
{
try
{
DependencyService.Get<Idevice>().StartLoading();
await AsyncUpdateStatus();
}
}
private async Task AsyncUpdateStatus()
{
try
{
await Task.Run(() =>
{
//Device.BeginInvokeOnMainThread is used in places to stop loading the screen
});
}
}
iOS:
async void loginButtonGesture_Tapped(object sender, EventArgs e)
{
try
{
DependencyService.Get<Idevice>().StartLoading();
await Task.Delay(40); //Required for iOS, otherwise loading panel is keep on running
await AsyncUpdateStatus();
}
}
private async Task AsyncUpdateStatus()
{
try
{
//await Task.Run(() => Enabling new thread also not working
//Device.BeginInvokeOnMainThread is used in places to stop loading the screen
}
}
Beide Android & iOS gleichen Forms Code teilt. Aber für diesen speziellen Fall funktioniert es bedingt. iOS funktioniert nach dem Hinzufügen Task.Delay(40)
und kommentieren Task.Run(() => {});
Thread.
Warum ist es so? Aber wenn ich über die Änderung in Android mache, funktioniert es nicht. Was genau passiert?