user-interface - Xamarin 表单 : How display activityindicator instantly while in async task?

标签 user-interface xamarin task indicator

    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/

相关文章:

python - 如何在 Python 中快速显示和更新位图?

c++ - Qt 5.2 - 如何将文本链接添加到 UI 中

iOS - 使用代码或 Storyboard设计器创建 View ?

python - 如何使用 .after 让 Canvas 文本在 Tkinter 中出现和消失

java - 按需填充下拉菜单 Java/Swing?

c# - Xamarin Forms : System. 反射.TargetInvocationException

android - 我的 StateButton 状态没有更新我的 View

gradle - 如何从根构建控制子项目Gradle任务的顺序?

task - 任务什么时候可以从阻塞状态切换到挂起状态?

c# - 将 Task<TResult> 中的 TResult 转换为 System.Object