Avalonia UI 中 ProgressBar 控件 CPU 占用过高的解决办法。

ProgressBar 控件的 IsIndeterminate 属性如果为 True,则表示忙碌中并显示一个滚动动画。

需要注意的是:在设置 IsIndeterminate 为 True 之后, 如果显示过的 ProgressBar 被隐藏,那么动画是不会被禁用的,而只是被隐藏了。

注意到这点是因为:我使用 ProgressBar 做了一个加载提示,并在加载完成后将控件隐藏。在某个配置较低的服务器上,这个空闲不动的界面一直稳定的占用 30% 的 CPU 。

该问题在 2018 年就有讨论:

解决方式是将 IsIndeterminate 与 IsVisiable 绑定为相同的值即可:

代码语言:javascript代码运行次数:0运行复制
<ProgressBar
        IsVisible="{Binding IsBusy}"
        IsIndeterminate="{Binding IsBusy}" />