Hello,I our application we are using the NetAdvantage WinForms v.2008vol3.If we update chart with 10 data points, each 5 seconds during 1 hour the chart crashes(the red cross lines are displayed in plot)Operating System: Windows 8.1Here is stack trace of the error:
System.ArgumentException: Parameter is not valid.
at System.Drawing.Image.get_Width()
at System.Drawing.Image.get_Size()
at Infragistics.Win.EmbeddableImageRenderer.GetSize(EditorSizeInfo& sizeInfo)
at Infragistics.Win.EmbeddableEditorBase.GetSize(EmbeddableEditorOwnerBase owner, Object ownerContext, Boolean valueOnly, Boolean full, Boolean borders, Int32 maxTextWidth)
at Infragistics.Win.UltraWinGrid.RowAutoSizeLayoutManagerHolder.RowAutoSizeCalculator.GetIdealCellSize(UltraGridColumn column)
at Infragistics.Win.UltraWinGrid.UltraGridRow.CalculateAutoHeight()
at Infragistics.Win.UltraWinGrid.UltraGridRow.get_HeightIncludingPadding()
at Infragistics.Win.UltraWinGrid.UltraGridRow.get_BaseHeight()
at Infragistics.Win.UltraWinGrid.UltraGridRow.get_TotalHeight()
at Infragistics.Win.UltraWinGrid.VisibleRow.GetTotalHeight(Boolean adjustForOverlappedBorders)
at Infragistics.Win.UltraWinGrid.VisibleRow.GetTotalHeight()
at Infragistics.Win.UltraWinGrid.ViewStyleVertical.OrientVisibleRowForward(VisibleRowFetchRowContext& context, VisibleRow visibleRow)
at Infragistics.Win.UltraWinGrid.ViewStyleBase.InsertRow(VisibleRowFetchRowContext& context, VisibleRow visibleRow, Boolean insertDescendantRows)
at Infragistics.Win.UltraWinGrid.ViewStyleBase.AddSiblingRows(VisibleRowFetchRowContext& context, VisibleRow parentVisibleRow, UltraGridRow firstSibling)
at Infragistics.Win.UltraWinGrid.ViewStyleBase.RecreateRowList(RowScrollRegion rsr)
at Infragistics.Win.UltraWinGrid.ViewStyleBase.VerifyRowList(RowScrollRegion rsr)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.ScrollRowIntoViewHelper(UltraGridRow row, Boolean exitEditMode, Boolean dontUpdateGridControl, Boolean maintainClosestScrollPosition, Boolean& selfUsedFlag)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.ScrollRowIntoView(UltraGridRow row, Boolean exitEditMode, Boolean dontUpdateGridControl, Boolean maintainClosestScrollPosition)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.ScrollRowIntoView(UltraGridRow row)
at Infragistics.Win.UltraWinGrid.UltraGrid.OnActiveRowChange(UltraGridRow newActiveRow, Boolean scrollIntoView)
at Infragistics.Win.UltraWinGrid.UltraGridBase.SetActiveRow(UltraGridRow row, Boolean scrollIntoView)
at Infragistics.Win.UltraWinGrid.UltraGridBase.set_ActiveRow(UltraGridRow value)
at SolarWinds.Toolset.IEE.HostApp.EventViewer.grd_InitializeRow(Object sender, InitializeRowEventArgs e)
at Infragistics.Win.UltraWinGrid.UltraGrid.OnInitializeRow(InitializeRowEventArgs e)
at Infragistics.Win.UltraWinGrid.UltraGrid.FireEvent(GridEventIds id, EventArgs e)
at Infragistics.Win.UltraWinGrid.UltraGrid.FireInitializeRow(InitializeRowEventArgs e)
at Infragistics.Win.UltraWinGrid.UltraGridRow.FireInitializeRow()
at Infragistics.Win.UltraWinGrid.RowsCollection.FireInitializeRow(IList rows)
at Infragistics.Win.UltraWinGrid.RowsCollection.InitNonGroupByRows(IList fireInitializeRowOnTheseRows)
at Infragistics.Win.UltraWinGrid.RowsCollection.SyncRowsHelper(IList boundList)
at Infragistics.Win.UltraWinGrid.RowsCollection.SyncRows()
at Infragistics.Win.UltraWinGrid.RowsCollection.VerifyGroupByVersionHelper()
at Infragistics.Win.UltraWinGrid.UltraGridRow.get_ParentRow()
at Infragistics.Win.UltraWinGrid.UltraGridRow.get_HiddenResolved()
at Infragistics.Win.UltraWinGrid.RowScrollRegion.get_FirstRow()
at Infragistics.Win.UltraWinGrid.RowScrollRegion.GetMaxScrollPosition(Boolean scrollToFill)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.EnsureScrollRegionFilled(Boolean calledFromRegenerateVisibleRows)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.RegenerateVisibleRows(Boolean resetScrollInfo)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.WillScrollbarBeShown(ScrollbarVisibility assumeColScrollbarsVisible)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.PositionScrollbar(Boolean resetScrollInfo)
at Infragistics.Win.UltraWinGrid.ScrollRegionBase.SetOriginAndExtent(Int32 origin, Int32 extent)
at Infragistics.Win.UltraWinGrid.RowScrollRegion.SetOriginAndExtent(Int32 origin, Int32 extent)
at Infragistics.Win.UltraWinGrid.DataAreaUIElement.ResizeRowScrollRegions()
at Infragistics.Win.UltraWinGrid.DataAreaUIElement.PositionChildElements()
at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
at Infragistics.Win.UltraWinGrid.DataAreaUIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
at Infragistics.Win.UltraWinGrid.DataAreaUIElement.set_Rect(Rectangle value)
at Infragistics.Win.UltraWinGrid.UltraGridUIElement.PositionChildElements()
at Infragistics.Win.UltraWinGrid.UltraGridUIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
at Infragistics.Win.UIElement.DrawHelper(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode, Boolean clipText, Boolean forceDrawAsFocused, Boolean preventAlphaBlendGraphics)
at Infragistics.Win.ControlUIElementBase.Draw(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode, Size elementSize, Boolean preventAlphaBlendGraphics)
at Infragistics.Win.ControlUIElementBase.Draw(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode)
at Infragistics.Win.UltraWinGrid.UltraGridUIElement.Draw(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode)
at Infragistics.Win.UltraControlBase.OnPaint(PaintEventArgs pe)
at Infragistics.Win.UltraWinGrid.UltraGrid.OnPaint(PaintEventArgs pe)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Do you have any idea about what may happens here?Thanks,Vasyl
Vasyl,
Do you have any further questions about this?
Hello Vasyl,
Thank you for your response.
Modifying a UI control from a non-UI thread results in "undefined behavior." This means that it may work or it may not work, but it is still not recommended. The following page on MSDN provides more information, specifically in the "Thread Safety" section.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.aspx
Hello,Thanks for your reply.But why this happens only when I update chart for a while(when there are a lot of points) and does not happen each time, on each loop?Vasyl
Thank you for providing the code.
I looked at it and it seems you're trying to modify the chart from a non-UI thread. Instead of directly modifying the chart from the non-UI thread, you should create a method that adds the item to the chart and invoke that method from the UI thread during each loop iteration.
Hello,We use complicated chart, but the basic approach is that we add some data points periodically.I have attached code of simple project.Thanks,Vasyl