Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
2114
Exception When using ThreadPool
posted

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...

  • 44743
    posted

    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.