我在UltraToolbarsManager(Infragistics)功能區的某處獲取未處理的異常。但這不是我想問的相關部分。我的問題是:爲什麼我在堆棧跟蹤中看不到我的應用程序的任何方法?堆棧跟蹤僅顯示Infragistics和Windows窗體模塊。由Application.ThreadException捕獲的Win32Exception - 丟失自己的代碼
複製場景非常罕見,但是幾次被看到的總是當機器暫停模式時。這個異常是由Application.ThreadException事件處理程序處理的,我沒有機會從不同的位置捕獲(表單被加載並使用Applicatioin.Run()運行)。
以下是異常的詳細信息:
The handle is invalid
System.ComponentModel.Win32Exception
Stack Trace:
bei System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation)
bei System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize)
bei System.Drawing.Graphics.CopyFromScreen(Point upperLeftSource, Point upperLeftDestination, Size blockRegionSize)
bei Infragistics.Win.ControlUIElementBase.CaptureOldImage(UIElement element)
bei Infragistics.Win.TransitionInfo..ctor(UIElement element, Transition transition, TransitionSettings settings)
bei Infragistics.Win.ControlUIElementBase.InitiateTransition(TransitionSettings settings, Transition transition, UIElement element)
bei Infragistics.Win.UIElement.InitiateTransition(TransitionSettings settings, UIElementTransitionType transitionType)
bei Infragistics.Win.UltraWinToolbars.RibbonGroupUIElement.OnMouseLeave()
bei Infragistics.Win.ControlUIElementBase.ElementEntered(UIElement element, Boolean triggerMouseLeavesOnly)
bei Infragistics.Win.ControlUIElementBase.SyncMouseEntered(Boolean triggerMouseLeavesOnly, UIElementInputType inputType, Boolean ignoreLastElementEntered)
bei Infragistics.Win.ControlUIElementBase.ProcessMouseLeave(Object sender, EventArgs e)
bei Infragistics.Win.Utilities.ProcessEvent(Control control, ProcessEvent eventToProcess, EventArgs e)
bei Infragistics.Win.UltraControlBase.OnMouseLeave(EventArgs e)
bei Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea.OnMouseLeave(EventArgs e)
bei System.Windows.Forms.Control.WmMouseLeave(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
有沒有辦法從Application.ThreadException事件,在那裏我可以看到更多的細節捕捉到了異常,否則不是?
異常是在表單創建時在同一個線程上處理的,所以我想這不是由另一個線程修改UI引起的。
我將不勝感激任何幫助或提示在哪裏看。
最好的問候,
邁克爾
很難說。似乎在鼠標從功能區組退出(MouseLeave事件)時觸發。格式不正確的工具提示文本或什麼?這只是一個猜測。 – Steve 2013-05-08 07:47:26
無法識別,這也是我的第一個想法,我試圖重現它。但在另一種情況下,初始方法不是MouseLeave,而是Paint事件。 – Michael 2013-05-08 10:25:31
當您泄漏窗口句柄時,會發生此類異常。隨着kaboom發生,當你的程序已經消耗了10,000個並且Windows不再願意讓你創建另一個。 Winforms編程中一個相當常見的錯誤,使用Controls.Clear()或Controls.Remove/At()而不處理控件是導致永久性泄漏的好方法。您可以使用任務管理器,查看+選擇列來診斷它,勾選USER32對象。 – 2013-05-08 12:18:18