如何解决Windows窗体ComboBox导致间歇性System.AccessViolationException
|| 一些背景故事: 我已经搜索了stackoverflow和Google,以找出此特定异常的来源。 我们有一个Windows窗体(C#、. NET 2.0)应用程序,有时会抛出System.AccessViolationException(下面的堆栈跟踪)。 Windows XP(SP3)和Windows Vista(SP2)上都发生了异常。根据用户的输入,我们已确定在更改ComboBox的选定索引时会发生异常。 ComboBox是标准的Windows Forms组件,它包含在继承“ 0”的自定义控件中。 我的主要查询是: 异常来自何处? 它是来自.NET框架中的某些内部错误吗? 可能是在SelectedindexChanged
事件上分派的代码导致它吗?
有关stackoverflow的相关主题:
查找System.AccessViolationException的原因-提及此异常等效于未处理的异常,只是该异常是由.NET运行时而不是由OS捕获的。
内存错误会导致System.AccessViolationException发生吗? -将错误的RAM视为罪魁祸首。无论如何,我认为它不太合理,因为最近它已在许多不同的机器上发生。它们所有人都有故障RAM的可能性很低。
堆栈跟踪:
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Type: System.AccessViolationException
at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc,IntPtr hWnd,Int32 msg,IntPtr wParam,IntPtr lParam)
at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
at System.Windows.Forms.Control.DefWndProc(Message& m)
at System.Windows.Forms.Control.WmCommand(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ComboBox.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.Callback(IntPtr hWnd,IntPtr wparam,IntPtr lparam)
解决方法
我也遇到了这些问题,回溯到使用.net 2.0 WinForms时。我似乎记得微软为此发布了一个修补程序。我用谷歌搜索并找到了这两个。你可以试试看。
http://support.microsoft.com/kb/923028
http://support.microsoft.com/kb/971030
另外,您是否安装了.NET 2.0的所有Service Pack?
, 不要给它提供过载内存的机会,不要处理所有新的和未使用的项/控件
通常在线程操作期间,请勿在列表框中随意添加/删除对象。
如果不清除内存,则会发生GDI问题。
组合框例外发生,它可能与所选项目相关,无论该项目存储的是文本还是整数。
文本必须是文本,整数必须是整数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。