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
165
Red cross in UltraTabControl
posted

Hi all! I have this strange problem with the UltraTabControl in a production environment.

- The famous red cross... I know this is a thread related issue, but I don't find the cause.
   We have a central menu application from which all programs are loaded in a new threads:

   Thread thread2 = new Thread(() => { Form2 f2 = new Form2(); Application.Run(f2); });
   thread2.SetApartmentState(AppartmentState.STA);
   thread2.Start();

   Once the sub-program is launched, there is no interaction between the menu and this program.

- This error occurs approximately once in the week and only by ONE user.

- At the moment the error occurs, the user is not working in the application. So it crashes when the program is in an inactive/idle state.

- We had a simular problem (red cross) earlier with the UltraStatusBar, but in that case all the users were affected. Removing the date- and time-panel from the UltraWinStatusBar resolved the problem.

Can someone give me a hint where I have to search to solve this issue? @, you perhaps? (Fan of your posts!) 

This is the exact error and stacktrace.


Error: Index was outside the bounds of the array.

Stack:
at System.Collections.Generic.HashSet`1.SetCapacity(Int32 newSize, Boolean forceNewHashCodes)
at System.Collections.Generic.HashSet`1.AddIfNotPresent(T value)
at Infragistics.Win.Notifications.NotificationUIElement.AddNotificationUIElementIfPossible(UIElement parent, INotificationBadgeProvider notificationProvider)
at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)
at Infragistics.Win.UIElement.DrawHelper(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode, Boolean clipText, Boolean forceDrawAsFocused, Boolean preventAlphaBlendGraphics, Nullable`1 zoomFactor)
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.UltraControlBase.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.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Parents
  • 469350
    Offline posted

    The screen shot you posted here is very small and I can't make out much. So... that's an UtraTabControl with the tabs aligned to the left? Not an UltraTabStrip? 

    The exception message indicate that it's blowing up when trying to show a notification badge - so presumably you are a applying NotificationBadges on a tab to let the user know there's something new on that tab. 

    Are you absolutely certain that nothing on the background thread could possibly affect that? That would seem to be a perfect way to get into trouble if your background thread is making some kind of change that would cause a NotificationBadge to be shown on the tab. 

    Working with background threads and UI controls can be extremely tricky. The interaction is not always obvious. For example, if the user tries to mouse over the tab and that tab repaints and that operation tries to access something on the background thread, that could easily cause the problem you are seeing here. Of the background thread interacts with any objects referenced by the UI Thread, same thing. 

Reply Children