1

Win32Exceptionをスローする恐ろしく複雑なコードがあるという問題があります

ウィンドウハンドルの作成中にエラーが発生しました。

コールスタックを見ると、スタックの一番下が

MainForm_ShownEvent(object sender, EventArgs e)//I Had a type-o here...arguments were wrong
{
    someControl.Parent = contentPanel;//call starts here
}

スタックの一番上はカスタムイベントから来ています。イベントハンドラーはMainFormにあります

anotherControl_RefreshEvent(object sender, PhysDocEventArgs e)
{
   Text = titleBarText;//win32 exception
}

これはどのように可能ですか?Form.Shown一度呼び出されたハンドルが作成される保証はありませんか?

アップデート

イミディエイトウィンドウthis.Handleに0が表示されます。ここthisで、はMainFormオブジェクトです。

スタックトレース(これは19ページの長さで、一部を削除する必要がありました)

    System.Windows.Forms.NativeWindow.CreateHandle(System.Windows.Forms.CreateParams cp)    
    System.Windows.Forms.Control.CreateHandle() 
    System.Windows.Forms.Form.CreateHandle()    
    DevExpress.XtraEditors.XtraForm.CreateHandle()  
    System.Windows.Forms.Control.RecreateHandleCore()   
    System.Windows.Forms.Form.RecreateHandleCore()  
    System.Windows.Forms.Form.OnTextChanged(System.EventArgs e) 
    System.Windows.Forms.Control.Text.set(string value) 
    System.Windows.Forms.Form.Text.set(string value)    
>   BHCS.ECC.PhysDoc.UI.Forms.MainForm.TemplateBaseControl_RefreshEvent(object sender = {BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl}, BHCS.ECC.PhysDoc.BL.PhysDocEventArgs e = {BHCS.ECC.PhysDoc.BL.PhysDocEventArgs}) Line 46    C#
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RefreshControls() Line 323 C#
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RunCreateControlProcess(bool destroyControls = false, bool reload = false, bool createControls = false, BHCS.ECC.PhysDoc.UI.LoadingForm loading = null) Line 1020  C#
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.docNode_Resize(object sender = {BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl}, System.EventArgs e = {System.EventArgs}) Line 683 C#
    System.Windows.Forms.Control.OnResize(System.EventArgs e)   
    System.Windows.Forms.UserControl.OnResize(System.EventArgs e)   
    BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 140   C#
    System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
    System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
    System.Windows.Forms.Control.UpdateBounds() 
    System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
    System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
    System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
    System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
    [Native to Managed Transition]  
    [Managed to Native Transition]  
    System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Width) 
    System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
    System.Windows.Forms.Control.Width.set(int value)   
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RefreshControls() Line 332 C#
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RunCreateControlProcess(bool destroyControls = false, bool reload = false, bool createControls = false, BHCS.ECC.PhysDoc.UI.LoadingForm loading = null) Line 1020  C#
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.docNode_Resize(object sender = {BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl}, System.EventArgs e = {System.EventArgs}) Line 683 C#
    System.Windows.Forms.Control.OnResize(System.EventArgs e)   
    System.Windows.Forms.UserControl.OnResize(System.EventArgs e)   
    BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 140   C#
    System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
    System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
    System.Windows.Forms.Control.UpdateBounds() 
    System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
    System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
    System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
    System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
    [Native to Managed Transition]  
    [Managed to Native Transition]  
    System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Width) 
    System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
    System.Windows.Forms.Control.Width.set(int value)   
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RefreshControls() Line 332 C#
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RunCreateControlProcess(bool destroyControls = false, bool reload = false, bool createControls = false, BHCS.ECC.PhysDoc.UI.LoadingForm loading = null) Line 1020  C#
    BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.docNode_Resize(object sender = {BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl}, System.EventArgs e = {System.EventArgs}) Line 683 C#
    System.Windows.Forms.Control.OnResize(System.EventArgs e)   
    System.Windows.Forms.UserControl.OnResize(System.EventArgs e)   
    BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 140   C#
    System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
    System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
    System.Windows.Forms.Control.UpdateBounds() 
    System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
    System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
    System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
    System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
    System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
    [Native to Managed Transition]  
    [Managed to Native Transition]  
    System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Height)    
    System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
    System.Windows.Forms.Control.Height.set(int value)  
    BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.RefreshSize(bool setAnchorAndWidth = false) Line 109 C#
    BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.ctrl_Resize(object sender = {System.Windows.Forms.Panel}, System.EventArgs e = {System.EventArgs}) Line 442  C#
    System.Windows.Forms.Control.OnResize(System.EventArgs e)   
    System.Windows.Forms.Panel.OnResize(System.EventArgs eventargs) 
    System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
    System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
    System.Windows.Forms.Control.UpdateBounds() 
    System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
    System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    

(削除されたセクション)

BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RefreshControls() Line 332 C#
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RunCreateControlProcess(bool destroyControls = false, bool reload = false, bool createControls = false, BHCS.ECC.PhysDoc.UI.LoadingForm loading = null) Line 1020  C#
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.docNode_Resize(object sender = {BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl}, System.EventArgs e = {System.EventArgs}) Line 683 C#
System.Windows.Forms.Control.OnResize(System.EventArgs e)   
System.Windows.Forms.UserControl.OnResize(System.EventArgs e)   
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 140   C#
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Height)    
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Height.set(int value)  
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.RefreshSize(bool setAnchorAndWidth = false) Line 109 C#
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.ctrl_Resize(object sender = {System.Windows.Forms.Panel}, System.EventArgs e = {System.EventArgs}) Line 442  C#
System.Windows.Forms.Control.OnResize(System.EventArgs e)   
System.Windows.Forms.Panel.OnResize(System.EventArgs eventargs) 
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Height)    
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Height.set(int value)  
BHCS.ECC.PhysDoc.Plugins.Prompt.BL.PanelPrompt.pnlOuter_Layout(object sender = {System.Windows.Forms.Panel}, System.Windows.Forms.LayoutEventArgs e = {System.Windows.Forms.LayoutEventArgs}) Line 164  C#
System.Windows.Forms.Control.OnLayout(System.Windows.Forms.LayoutEventArgs levent = {System.Windows.Forms.LayoutEventArgs}) 
System.Windows.Forms.ScrollableControl.OnLayout(System.Windows.Forms.LayoutEventArgs levent)    
System.Windows.Forms.Control.PerformLayout(System.Windows.Forms.LayoutEventArgs args)   
System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.PerformLayout(System.Windows.Forms.Layout.IArrangedElement affectedElement, string affectedProperty)  
System.Windows.Forms.Control.OnResize(System.EventArgs e = {System.EventArgs})  
System.Windows.Forms.Panel.OnResize(System.EventArgs eventargs) 
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Width) 
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Width.set(int value)   
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 150   C#
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Width) 
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Width.set(int value)   
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RefreshControls() Line 332 C#
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RunCreateControlProcess(bool destroyControls = false, bool reload = false, bool createControls = false, BHCS.ECC.PhysDoc.UI.LoadingForm loading = null) Line 1020  C#
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.docNode_Resize(object sender = {BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl}, System.EventArgs e = {System.EventArgs}) Line 683 C#
System.Windows.Forms.Control.OnResize(System.EventArgs e)   
System.Windows.Forms.UserControl.OnResize(System.EventArgs e)   
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 140   C#
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Height)    
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Height.set(int value)  
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.RefreshSize(bool setAnchorAndWidth = false) Line 109 C#
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.ctrl_Resize(object sender = {System.Windows.Forms.Panel}, System.EventArgs e = {System.EventArgs}) Line 442  C#
System.Windows.Forms.Control.OnResize(System.EventArgs e)   
System.Windows.Forms.Panel.OnResize(System.EventArgs eventargs) 
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Height)    
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Height.set(int value)  
BHCS.ECC.PhysDoc.Plugins.Prompt.BL.PanelPrompt.pnlOuter_Layout(object sender = {System.Windows.Forms.Panel}, System.Windows.Forms.LayoutEventArgs e = {System.Windows.Forms.LayoutEventArgs}) Line 164  C#
System.Windows.Forms.Control.OnLayout(System.Windows.Forms.LayoutEventArgs levent = {System.Windows.Forms.LayoutEventArgs}) 
System.Windows.Forms.ScrollableControl.OnLayout(System.Windows.Forms.LayoutEventArgs levent)    
System.Windows.Forms.Control.PerformLayout(System.Windows.Forms.LayoutEventArgs args)   
System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.PerformLayout(System.Windows.Forms.Layout.IArrangedElement affectedElement, string affectedProperty)  
System.Windows.Forms.Control.OnResize(System.EventArgs e = {System.EventArgs})  
System.Windows.Forms.Panel.OnResize(System.EventArgs eventargs) 
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Width) 
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Width.set(int value)   
BHCS.ECC.PhysDoc.UI.UserControls.PDDocumentNodeControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 150   C#
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = Width) 
System.Windows.Forms.Control.SetBounds(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) 
System.Windows.Forms.Control.Width.set(int value)   
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RefreshControls() Line 332 C#
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.RunCreateControlProcess(bool destroyControls = false, bool reload = false, bool createControls = false, BHCS.ECC.PhysDoc.UI.LoadingForm loading = null) Line 1020  C#
BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl.OnResize(System.EventArgs e = {System.EventArgs}) Line 1073    C#
System.Windows.Forms.Control.OnSizeChanged(System.EventArgs e = {System.EventArgs}) 
System.Windows.Forms.Control.UpdateBounds(int x, int y, int width, int height, int clientWidth, int clientHeight)   
System.Windows.Forms.Control.UpdateBounds() 
System.Windows.Forms.Control.WmWindowPosChanged(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})    
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.UserControl.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 71, System.IntPtr wparam, System.IntPtr lparam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
DevExpress.Utils.Win.Hook.ControlWndHook.WindowProc(System.IntPtr hWnd, int message, System.IntPtr wParam, System.IntPtr lParam)    
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Forms.Control.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified = None)  
System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.SetBounds(System.Drawing.Rectangle bounds, System.Windows.Forms.BoundsSpecified specified)    
System.Windows.Forms.Layout.DefaultLayout.xLayoutDockedControl(System.Windows.Forms.Layout.IArrangedElement element, System.Drawing.Rectangle newElementBounds, bool measureOnly, ref System.Drawing.Size preferredSize, ref System.Drawing.Rectangle remainingBounds)  
System.Windows.Forms.Layout.DefaultLayout.LayoutDockedControls(System.Windows.Forms.Layout.IArrangedElement container, bool measureOnly = false)    
System.Windows.Forms.Layout.DefaultLayout.xLayout(System.Windows.Forms.Layout.IArrangedElement container = {System.Windows.Forms.Panel}, bool measureOnly = false, out System.Drawing.Size preferredSize = {Width = -7103 Height = -7105})  
System.Windows.Forms.Layout.DefaultLayout.LayoutCore(System.Windows.Forms.Layout.IArrangedElement container, System.Windows.Forms.LayoutEventArgs args) 
System.Windows.Forms.Layout.LayoutEngine.Layout(object container, System.Windows.Forms.LayoutEventArgs layoutEventArgs) 
System.Windows.Forms.Control.OnLayout(System.Windows.Forms.LayoutEventArgs levent)  
System.Windows.Forms.ScrollableControl.OnLayout(System.Windows.Forms.LayoutEventArgs levent)    
System.Windows.Forms.Control.PerformLayout(System.Windows.Forms.LayoutEventArgs args)   
System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.PerformLayout(System.Windows.Forms.Layout.IArrangedElement affectedElement, string affectedProperty)  
System.Windows.Forms.Control.ControlCollection.Add(System.Windows.Forms.Control value = {BHCS.ECC.PhysDoc.UI.UserControls.TemplateBaseControl}) 
System.Windows.Forms.Control.ParentInternal.set(System.Windows.Forms.Control value) 
System.Windows.Forms.Control.Parent.set(System.Windows.Forms.Control value) 
BHCS.ECC.PhysDoc.UI.Forms.MainForm.MainForm_Shown(object sender = {BHCS.ECC.PhysDoc.UI.Forms.MainForm}, System.EventArgs e = {System.EventArgs}) Line 88    C#
System.Windows.Forms.Form.OnShown(System.EventArgs e)   
System.Windows.Forms.Form.CallShownEvent()  
System.Windows.Forms.Control.InvokeMarshaledCallbackDo(System.Windows.Forms.Control.ThreadMethodEntry tme)  
System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(object obj)  
System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)    
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)    
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)  
System.Windows.Forms.Control.InvokeMarshaledCallback(System.Windows.Forms.Control.ThreadMethodEntry tme)    
System.Windows.Forms.Control.InvokeMarshaledCallbacks() 
System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m)  
System.Windows.Forms.ContainerControl.WndProc(ref System.Windows.Forms.Message m)   
System.Windows.Forms.Form.WndProc(ref System.Windows.Forms.Message m)   
DevExpress.XtraEditors.XtraForm.WndProc(ref System.Windows.Forms.Message msg)   
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)  
System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)    
System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg = 49734, System.IntPtr wparam, System.IntPtr lparam) 
[Appdomain Transition]  
[Native to Managed Transition]  
[Managed to Native Transition]  
System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame frame = {System.Windows.Threading.DispatcherFrame}) Line 2281    Unknown
System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame frame) Line 368  Unknown
System.Windows.Threading.Dispatcher.Run() Line 327  Unknown
System.Windows.Application.RunDispatcher(object ignore) Line 2745   C#
System.Windows.Application.RunInternal(System.Windows.Window window) Line 1841  C#
System.Windows.Application.Run(System.Windows.Window window) Line 261   C#
Eclipsys.Infrastructure.UIShell.App.Main()  
4

1 に答える 1

2

これは、簡単な診断と非常に一般的な原因がある例外です。タスクマネージャの[プロセス]タブで診断を開始します。列を表示+選択し、[ユーザーオブジェクト]にチェックマークを付けます。その間、GDIオブジェクトとハンドルにもチェックマークを付けます。プログラムを実行し、プログラムの機能を使用している間、プロセスのUSERObjects値を観察します。

表示される値が着実に上昇している場合は、プログラムがウィンドウハンドルをリークしています。値が10000に達すると、Windowsはそれ以上のウィンドウの提供を停止し、プロセスはクォータを消費します。それによって発生する例外は、「ウィンドウハンドルの作成エラー」です。

原因は、Winformsで非常に一般的なプログラミングミスです。これは、Controls.Remove / At()またはControls.Clear()を使用して親からコントロールを削除したが、削除されたコントロールでDispose()メソッドを呼び出すのを忘れた場合に発生します。それは彼らを永遠に生きさせ、彼らの窓の取っ手によって生き続けさせます。

于 2012-10-30T15:49:41.320 に答える