I have a panel in a Form that uses Toolbars.I that Panel I draw and "move" objets (be redrawing)
Everything worked fine until I stardet to Use
ThreadPool.QueueUserWorkItem( _ New Threading.WaitCallback(
to make asynchronous call for some time consuming methods. Now, I have the follwing:
------------------------------------------------------An application UnhandledException were thrown.The application will now terminate.'Object reference not set to an instance of an object.'StackTrace: at Infragistics.Win.UltraWinToolbars.UltraToolbarBase.ToolbarToolRow.InternalAddTool(ToolBase tool, Size toolSize, Boolean needsHorizontalSeparator) at Infragistics.Win.UltraWinToolbars.UltraToolbarBase.ToolGroup.CalculateMetrics(Int32 maxWidth) at Infragistics.Win.UltraWinToolbars.UltraToolbarBase.ToolbarMetrics.CalculateFloatingMetricsHelper(ToolGroup[] toolGroups, Int32 maxWidth) at Infragistics.Win.UltraWinToolbars.UltraToolbarBase.ToolbarMetrics.CalculateFloatingMetrics(Size cachedSize, Size delta) at Infragistics.Win.UltraWinToolbars.UltraToolbarBase.GetMetrics(Size cachedSize, Size delta) at Infragistics.Win.UltraWinToolbars.UltraToolbarBase.ToolAreaInformation.FromToolbar(UltraToolbarBase toolbar, Rectangle overallArea) at Infragistics.Win.UltraWinToolbars.ToolbarUIElement.PositionChildElements() at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.DrawHelper(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode, Boolean clipText, Boolean forceDrawAsFocused) at Infragistics.Win.ControlUIElementBase.Draw(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode, Size elementSize) at Infragistics.Win.ControlUIElementBase.Draw(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode) at Infragistics.Win.UltraControlBase.OnPaint(PaintEventArgs pe) at Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea.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)---------------------------OK ---------------------------
Then , the toolboxex became white + redCrossed.
As you can see the exception is not even handled, but intercepted OnUnhandledApplication on the application level...
Are you interacting with the UltraToolbarsManager or any of its sub-objects in the thread pool threads? If so, this is not allowed. Just like other WinForms Controls and Components, you con only access it from the UI thread. There are certain exceptions to this rule, such as when calling Invoke, BeginInvoke, and InvokeRequired. But for just about everything else, you must invoke calls to the UI thread when you want to interact with the UltraToolbarsManager.
I don't interract with them in the newly created thread...