C#:异常 - 参数无效 - 表单 Dispose 方法

2024-01-06

在处置时object of a form从另一个exception正在投掷像Parameter is not valid

访问第二种形式的代码

        Assembly X = Assembly.LoadFile(Application.StartupPath + "\\Test.dll");
        Form frminv = (Form)X.CreateInstance("Test.Form1");
        frminv.Dispose();

这是表单处理方法(来自Designer.cs)

protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);// exception is thrown from here
    }

这是堆栈跟踪

     at System.Drawing.Image.get_FrameDimensionsList()
 at System.Drawing.ImageAnimator.CanAnimate(Image image)
 at System.Drawing.ImageAnimator.ImageInfo..ctor(Image image)
 at System.Drawing.ImageAnimator.Animate(Image image, EventHandler onFrameChangedHandler)
 at System.Windows.Forms.PictureBox.Animate(Boolean animate)
 at System.Windows.Forms.PictureBox.Animate()
 at System.Windows.Forms.PictureBox.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.Form.OnVisibleChanged(EventArgs e)
 at System.Windows.Forms.Control.WmShowWindow(Message& m)
 at System.Windows.Forms.Control.WndProc(Message& m)
 at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
 at System.Windows.Forms.ContainerControl.WndProc(Message& m)
 at System.Windows.Forms.Form.WmShowWindow(Message& m)
 at System.Windows.Forms.Form.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.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 at System.Windows.Forms.UnsafeNativeMethods.IntDestroyWindow(HandleRef hWnd)
 at System.Windows.Forms.UnsafeNativeMethods.DestroyWindow(HandleRef hWnd)
 at System.Windows.Forms.NativeWindow.DestroyHandle()
 at System.Windows.Forms.Control.DestroyHandle()
 at System.Windows.Forms.Control.Dispose(Boolean disposing)
 at System.Windows.Forms.ContainerControl.Dispose(Boolean disposing)
 at System.Windows.Forms.Form.Dispose(Boolean disposing)
 at ICFTWaveForm.WaveForm.Dispose(Boolean disposing)
 at System.ComponentModel.Component.Dispose()
 at System.Windows.Forms.Control.Dispose(Boolean disposing)
 at System.ComponentModel.Component.Dispose()
 at System.Windows.Forms.Control.Dispose(Boolean disposing)
 at System.ComponentModel.Component.Dispose()
 at System.Windows.Forms.Control.Dispose(Boolean disposing)
 at System.Windows.Forms.ContainerControl.Dispose(Boolean disposing)
 at System.Windows.Forms.Form.Dispose(Boolean disposing)
 at XXXX.frmMain.Dispose(Boolean disposing) in E:\XXXX\XXXX\frmMain.Designer.cs:line 20
 at System.ComponentModel.Component.Dispose()
 at XXXX.TestComponents.OpenComponentForTestting(stComponents TestComponent, stTestStepDetails Test, enExecutionModeTypes Mode, Boolean IsVisibleMode, Int32 nStepIndex, Int32 nTotalSteps) in E:\My Projects\XXXXXXXX\frmMDIContainer.cs:line 3145

将会出现什么问题。 请帮我。


我必须查看代码才能确定,但​​也许我可以帮助您查找正确的位置......

堆栈跟踪表明在 Dispose 序列期间发生了 pictureBox 中动画的重绘。那么,为什么图片框应该在它应该死掉的情况下尝试这样做呢?

在这些情况下,您可能需要执行以下操作:在处理窗口之前关闭()窗口,彻底关闭窗口(例如,在调用 base.Dispose() 之前禁用图片框中的动画),或者可能还有其他资源在您的类中创建并需要在您可以安全地调用 base.Dispose 之前进行处置。或者,您可能已经处理掉了仍然需要的东西(例如,pictureBox 试图访问的图像) - 检查处理“组件”实际上会处理什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#:异常 - 参数无效 - 表单 Dispose 方法 的相关文章

随机推荐