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问题。 组合框例外发生,它可能与所选项目相关,无论该项目存储的是文本还是整数。 文本必须是文本,整数必须是整数。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...