I've detected an strange issue/bug that i'm quite sure it's related to BusyIndicator. My applications uses several BusyIndicators to notify user whenever a remote acces is done. After all data is loaded, with no action performed by the user I can see in task manager that iexplorer process hosting the silverlight application consumes a bit of cpu. Application is doing nothing!!! I've run a perfomance profiler that tells me that application is doing nothing and is consuming 0% of cpu, however I can see in task manager that application is consuming 1-2% of cpu (my PC is a quad core i7 processor, on older PCs, cpu consumption may arrive at 10-15%). Removing all BusyIndicators, no cpu usage is shown in task manager when nothing is done.
You can see this same behavior in your silverlight demo application. Just navigate to BusyIndicator/FirsLook example. Initially this example show an empty scheduler, in this situation, the application's cpu usage is 0%. Then, click to "Load Appointments" button, a, normal, cpu usage peak is shown in task manager when appointments are retrieved, but after an interval you will observe that application is consuming permanently cpu (1%) in my case.
17 Answers, 1 is accepted
I need to confirm there's a bug in BusyIndicator and if it exists an easy solution or workaround to decide continuing using BusyIndicator!!!!
Thanks.
I need a response to decide what to do with BusyIndicator!!!
Thank you for your feedback and please accept our apologies on the delay of our response.
Currently, we are investigating the issue with the busy indicator. Indeed, there is some CPU load on the demo application while being idle. This, however, does not automatically mean that the RadBusyIndicator is causing the load because the demo application is a complex one and contains other parts that may introduce delays.
What is interesting, we did not manage to reproduce the same in a simple project scenario (please see it attached). While visible the RadBusyIndicator inside generates about 1% of CPU usage (Core2Quad), however, when IsBusy is false - the CPU reduces to 0 again.
Having said that can you please try to reproduce the cpu usage issue in the attached project and let us know about the result? Alternatively, you may open a new support ticket and attach your project there so that we can investigate it and come up with some workaround.
Hope this explains the matter. We will be glad to assist you further.
Teodor
the Telerik team
Thanks for your interest.
I've tried your demo application and could'n reproduce the issue. As you explain, it seems is working fine in this scenario. However, as I commented in the first post, I ran a perfomance profiling test (with read gate tool) and while process was consuming cpu, test didn't register any noticeable silverlight code activity (less than 0,1 ms during more tahn 30 seconds). Also, removing RadBusyIndicators from my views seems to solve the problem. In addition, I've tried to remove the BusyIndicator in telerik's demo solution for the BusyIndicator/FirstLook example, and again this solved the problem.
Maybe the issue is related to the container where BusyIndicator is in.
I'm near to my release date, and I need a solution for this issue, please pay attention at this issue so I can decide to keep using BusyIndicator or look for an alternative solution.
We have identified the source of the issue - it is the animation of the progress bar inside RadBusyIndicator's template - despite its Visibility becomes Collapsed when IsBusy is false, the Storyboard of the circle goes on forever and this causes a little CPU usage.
This is already on our tasks list and will be fixed with some of our future releases, but until then you can use the following workaround:
<
telerik:RadBusyIndicator
IsIndeterminate
=
"{Binding IsBusy, RelativeSource={RelativeSource Self}}"
/>
What the above does is set the IsIndeterminate property of the ProgressBar inside RadBusyIndicator to false (whenever not busy), so that its visual state changes and the animation stops. This should eliminate the issue with CPU usage when idle.
Hope this helps. Let us know in case you need further assistance.
Teodor
the Telerik team
Thanks for your help!!!! Is working fine with your solution. I thought the issue was related to a DropShadowEffect in BusyIndicator, but watching its template I suspected the IsIndeterminate could be the matter, but like you, I created a simple scenario and I couldn't reproduce the issue! What I do not understand is why in a simple scenario this issue does not appear.
Thanks again!!
We are glad the workaround is acceptable to the moment.
The truth with the simple example scenario, actually, is that the CPU still does some work. However the consumption is less than 1% CPU time and thus the Windows Task Manager does not report it as activity. Looking at it through a profiling application is the only way to notice that there is some load on the CPU. Still, the workaround fixes the matter for the moment.
Hope this explains the matter. We will be glad to assist you further.
Teodor
the Telerik team
The suggested fix actually works, but I'm using controls 2011.2.920.1040, and the issue is still there and it was crippling our application. Is there a time frame for this to get fixed?
Best Regards,
Jaime Luis Bula P.
I am sorry to hear you experienced difficulties with your application due to this issue. The issue will be fixed for the Q3 2011 release.
Greetings,
Dani
the Telerik team
I've just upgraded to the Q3 2011 version (using the wizard) but the problem does not seem to be solved. The CPU still works more and more as I load more busy indicators even though they are all set to IsBusy=false after the operation is done.
Please ensure that the fix was applied correctly.
Thanks,
Ziev
I solved the issue setting a default style. If you have upgraded to SLV5, you can try to add the following xaml at your App.xaml file to set a default style for the RadBusyIndicator. It worked fine for me:
<
Style
TargetType
=
"telerik:RadBusyIndicator"
>
<
Setter
Value
=
"{Binding Path=IsBusy, RelativeSource={RelativeSource Self}}"
Property
=
"IsIndeterminate"
/>
</
Style
>
I you still are on Silverlight 4, you can't use Binding on style setter's. I have an implementation for style databinding that allows setting bindings on style setters in Slv3, Slv4. I can share the code with you if you are interested on.
Fortunately the fix with IsIndeterminate works and fixes also the memory leak. I don't know if it's already included in later releases, but if not, it definitely should be.
just to inform you I had to specify this on Q1 2012 for WPF... I had a 5% on an I7... setting the indeterminate everything is ok...
Marcel
Unfortunately this is a known issue and is such it is logged in our feedback portal where you can check its status. Please accept our apology for the inconvenience.
Regards,
Tina Stancheva
Telerik
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>
thx
Currently this issue is not fixed, but you you can track its status by following the bug report item in our feedback portal. By doing this you will be notified when we change its status.
As a workaround you can set the IsIndetermineted property of the RadProgressBar to false when it is collapsed.
Regards,
Martin
Telerik