2017-11-14 2 views
0

Ich habe Schwierigkeiten, die Fortschrittsanzeige in meiner Xamarin App anzuzeigen. Ich glaube, es geht mit den verschiedenen Threads. Hier ist mein Code.Xamarin Fortschrittsdialog zum Ein- und Ausblenden

private void NavigateCommand() 
    { 
     using (UserDialogs.Instance.Loading("Verifying Credentials",null, null, true, MaskType.Black)) 
       { 
       try 
        { 
        var authResult = Task.Run(async() => await _loginService 
              .Login(Priority.Background, EmailAddress.Value, Password.Value) 
                .ConfigureAwait(false)).Result; 

         CacheToken(authResult); 
        } 
        catch { } 
       } 

      Device.BeginInvokeOnMainThread(() => UserDialogs.Instance.HideLoading()); 
      _navigationService.NavigateAsync("PageOnePage"); 
    } 

Also, was jetzt passiert ist, dass der Fortschritt/Lade Ansicht erst in der zweiten letzte Zeile nicht zeigen (das ist der Code für das Verstecken ist) ausgeführt wird. Es ist ein schneller Blitz und es verschwindet. Ich schätze jede Hilfe.

Antwort

2

So etwas sollte funktionieren, wie es Ihre UserDialogs/NavigateAsync Anrufe auf dem UI-Thread platziert und Login/CacheToken auf einem Hintergrund-Thread:

private void NavigateCommand() 
{ 
    Device.BeginInvokeOnMainThread(async() => 
    { 
     using (UserDialogs.Instance.Loading("Verifying Credentials", null, null, true, MaskType.Black)) 
     { 
      await Task.Run(async() => 
      { 
       var authResult = await _loginService.Login(Priority.Background, EmailAddress.Value, Password.Value); 
       CacheToken(authResult); 
      }); 
      Device.BeginInvokeOnMainThread(() => 
      { 
       UserDialogs.Instance.HideLoading(); 
       _navigationService.NavigateAsync("PageOnePage"); 
      }); 
     } 
    }); 
} 
+0

Danke. Das funktioniert –

Verwandte Themen