我有一个偶尔抛出此异常的应用程序:
System.ObjectDisposedException: Cannot access a disposed object.
Object name: "Panel".
bei System.Windows.Forms.Control.CreateHandle()
bei System.Windows.Forms.Control.get_Handle()
bei System.Windows.Forms.ContainerControl.FocusActiveControlInternal()
bei System.Windows.Forms.Form.set_Active(Boolean value)
bei System.Windows.Forms.Form.WmActivate(Message& m)
bei System.Windows.Forms.Form.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)
Run Code Online (Sandbox Code Playgroud)
有没有办法在不触及代码的情况下理想地抑制此异常?我正在考虑一些注册表魔术或深奥的.NET配置.
此外,我当然也对捕获此异常的方法感兴趣.似乎没有钩子让我抓住这个例外...当然它不可重复......
"有没有办法解决我每次用脚射击自己的左腿疼痛?也许是服用了大量的扑热息痛或类似物?"
这里的答案不是解决疼痛,而是避免自己在脚下射击.
在这种情况下,有代码访问处理的面板.此代码必须是固定的,答案是不抑制异常,因为你真的做在你的代码中的错误.这不是故障的运行时.
现在,我从评论中看到你想要"快速修复"以恢复工作,这种态度不会长期帮助你,因为正如你所看到的,每个答案和可能的解决方案都会带来新的问题.
因此,不要花时间试图让运行时静默,告诉你有一个bug,而是停止这样做并修复bug.
运行时试图告诉你一些事情.不要忽视它!捕获并忽略异常不会使问题消失.
特定的例外情况告诉您,在处理完Panel后,您正尝试使用它.所以你基本上有两个选择:1)在你完成使用之前不要暴露.2)处理后请勿使用.
编辑:为了帮助您解决问题,您可以设置ADPlus以创建该特定异常的转储文件.这可以让您了解为什么会发生这种情况.John Robbins有一篇关于如何做到这一点的Bugslayer文章.请参阅http://msdn.microsoft.com/en-us/magazine/cc163530.aspx.
| 归档时间: |
|
| 查看次数: |
5364 次 |
| 最近记录: |