public async Task ShowIndicator(Func<Task> action)
{
actionEnabled = false;
IndicatorVisibility = true;
await Task.Delay(5000);
await action.Invoke();
IndicatorVisibility = false;
actionEnabled = true;
}
我使用上面的代码来运行一些任务,同时通过设置 IndicatorVisibility 的 View 模型属性来显示指示器。如果我放置 Task.Delay,它会没问题,但会减慢代码速度。如果我没有放置它,指示器将不会直接显示,因为它将设置倒数第二个指示器可见性为 false。
是否可以等待指示器自行显示,然后再执行上述代码中的操作?
最佳答案
我也遇到了同样的问题。这有确切的问题,事件指示器永远不会出现或出现得太晚:
async void GoDetail(object obj)
{
Busy = true;
DetailsViewModel.Initialize(_items, this.SelectedItem);
await App.Current.MainPage.Navigation.PushAsync(new xxxPage());
Busy = false;
}
这修复了它,事件指示器立即出现...:
async void GoDetail(object obj)
{
Busy = true;
Device.BeginInvokeOnMainThread(async () =>
{
DetailsViewModel.Initialize(_items, this.SelectedItem);
await App.Current.MainPage.Navigation.PushAsync(new xxxPage());
Busy = false;
});
}
关于user-interface - Xamarin 表单 : How display activityindicator instantly while in async task?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48758553/