You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin ProgressBar动画不显示问题求助

解决Xamarin ProgressBar无动画直接显示完成的问题

嘿,我一眼就揪出问题所在了——你的ProgressBar直接跳转到完成状态没动画,核心是阻塞了UI线程,还有个小笔误得修正!

问题1:用.Wait()卡死了UI线程

你在OnAppearing里写了UpdateProgressBar(0.8, 2000).Wait();,这可是UI操作的大忌!.Wait()会让当前UI线程暂停,硬生生等异步任务结束。但ProgressTo本来就需要UI线程逐帧更新进度,线程被卡住后,动画根本没机会一步步跑,直接就跳到最终的0.8进度值了。

问题2:控件实例变量名不匹配

你创建的ProgressBar实例是progressBar,但在UpdateProgressBar里调用的是MemeProgressBar.ProgressTo——这明显是变量名写错了!不修正的话,要么编译报错,要么你的代码根本没作用在你创建的那个ProgressBar上。

修正后的完整代码

把OnAppearing改成异步方法,用await替代.Wait(),同时修正变量名:

ProgressBar progressBar;
public Preivew()
{
    InitializeComponent();
    ContentView LoadingView = new ContentView
    {
        VerticalOptions = LayoutOptions.FillAndExpand,
        HorizontalOptions = LayoutOptions.FillAndExpand,
        BackgroundColor = Color.Transparent
    };
    progressBar= new ProgressBar
    {
        ProgressColor = Color.FromHex("#3897F0"),
        HorizontalOptions = LayoutOptions.FillAndExpand,
        HeightRequest = 30,
        Progress = 0.0
    };
    RelativeLoadingLayout.Children.Add(LoadingView,
        Constraint.RelativeToParent((parent) => { return (0); }),
        Constraint.RelativeToParent((parent) => { return (0); }),
        Constraint.RelativeToParent((parent) => { return parent.Width; }),
        Constraint.RelativeToParent((parent) => { return parent.Height; }));
    LoadingView.Content = progressBar;
}

// 改成async方法,避免阻塞UI
protected override async void OnAppearing()
{
    base.OnAppearing();
    await UpdateProgressBar(0.8, 2000);
}

async Task UpdateProgressBar(double Progress, uint time)
{
    // 修正变量名,确保操作的是你创建的ProgressBar
    await progressBar.ProgressTo(Progress, time, Easing.Linear);
}

额外提醒

在Xamarin的UI生命周期方法(比如OnAppearing)里处理异步操作时,一定要用async/await组合,绝对别用.Wait()或者.Result,这些操作会阻塞UI线程,不仅动画失效,还可能引发死锁哦。

内容的提问来源于stack exchange,提问作者user12520502

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:12:30