Posted on Sep 28, 2009
(permalink)
Hi!
First of all I must say your dashboard application is great and just what we have been looking for.
I have found a few bugs that I wanted to share with you.
For some reason, dashbord use 1.2Gb of my memory and I get a system out om memory exception when I start the application.
I have identitfied the problem to be in the "Remaining Work" widget.
If I turn it of, the application runs fine.
If I utorn it on, I get this error;
2009-09-28 09:33:35,893 [3996] [13] INFO IRC.Gear.WorkItemManager.Dashboard.TfsDataProvider.TfsWarehouse - Connection to TFS Warehouse established..
2009-09-28 09:38:10,789 [3996] [1] ERROR IRC.Gear.WorkItemManager.Dashboard.DashboardApp - Unhandled Exception. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at Telerik.Windows.Controls.Charting.AxisX.AddTickPoints()
at Telerik.Windows.Controls.Charting.AxisX.CreateTickPoints()
at Telerik.Windows.Controls.Charting.Axis.UpdateRange()
at Telerik.Windows.Controls.Charting.Axis.UpdateRangeAndStep()
at Telerik.Windows.Controls.Charting.Axis.MaxValueChangedCallback(DependencyObject target, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType)
at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, OperationType operationType, Boolean isInternal)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at Telerik.Windows.Controls.Charting.Axis.set_MaxValue(Double value)
at IRC.Gear.WorkItemManager.Dashboard.Widgets.RemainingWorkTrendWidget.PopulateChart()
at IRC.Gear.WorkItemManager.Dashboard.Widgets.RemainingWorkTrendWidget.RefreshData()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
What query is this widget using?
I have a quad core MT cpu but it only uses 50% of my cpu. Any chance you split the code to use aditional threads?
Regards
Per Bornsjo