我在Xamarin应用中显示进度视图时遇到了一些困难。我相信它与不同的线程有关。这是我的代码。
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");
}
所以现在发生的事情是,在执行第二行(即隐藏代码)之前,进度/加载视图才会显示。它快速闪现,它消失了。我感谢任何帮助。
答案 0 :(得分:2)
这样的内容可以正常运行,因为它会将UserDialogs
/ NavigateAsync
调用放在UI线程上,Login
/ CacheToken
放在后台线程上:
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");
});
}
});
}