【问题标题】:.NET Access Violation Exception with System.Drawing.dll / NumericUpDownSystem.Drawing.dll / NumericUpDown 的 .NET 访问冲突异常
【发布时间】:2013-09-08 23:39:39
【问题描述】:

我遇到了一个非常愚蠢的问题。我已经尝试完全重新安装 .NET 并没有解决问题。我什至无法通过谷歌搜索找到其他有同样问题的人。

就在我的计算机上,如果我将 NumericUpDown 控件添加到 .NET 项目中的表单并运行应用程序,我会在运行应用程序时收到以下错误消息:

“System.AccessViolationException”类型的未处理异常 发生在 System.Drawing.dll 中

附加信息:试图读或写保护 记忆。这通常表明其他内存已损坏。

应用程序在其他机器上运行良好。

有什么建议吗?

【问题讨论】:

  • 老实说,如果它在其他机器上运行良好,那么它可能是任何东西,可能是您正在运行的插件,可能是恶意软件,可能是您的内存。
  • 如果您有任何其他程序集或库可能使用非托管内存引用并在错误的时间释放它们,您也应该查看您的项目,我以前从商业库中看到过。对于我的项目来说,这是一个令人讨厌的问题,我们不得不完全删除该库,因为错误会随机出现

标签: c# .net winforms


【解决方案1】:

问题原来与显卡有关。我们发现一台同事的机器也有同样的问题,恰好两台机器最近都安装了同样便宜的显卡(Radeon HD5450)。两者都在运行最新的驱动程序。

没有解释为什么这些卡/驱动程序会导致这个问题。但是移除卡并恢复到板载图形解决了这个问题。计划是尝试几个便宜的 GEForce 210。

我意识到这本身不是编程问题,但这可能会为其他人节省几个小时的放屁时间!

【讨论】:

    【解决方案2】:

    当我将 NumericUpDown 控件拖到 Visual Basic 2010 Express 中的表单上,然后尝试运行程序时,我也遇到了 System.AccessViolationException 错误。我正在使用显卡华硕 EAH5450。寻找解决方案我发现了这篇文章。

    我的 32 位 XP 系统使用的是随卡提供的驱动程序,版本 9.000。卸载驱动程序、Catalyst Control Center 和 GPU Tweak(全部来自提供的 DVD)后,我安装了从他们的支持链接下载的驱动程序版本 8.980。安装后,驱动程序的日期为 2012 年 6 月 11 日。我还从同一个下载中安装了 Catalyst Control Center。

    我在表单中添加了一个 NumericUpDown 控件并运行程序,没有出现错误。几乎没有解决问题的决定性证据,但这是一个积极的步骤,也许是一个无需更改硬件的可行解决方案。

    感谢那些为这个帖子做出贡献的人。

    【讨论】:

      【解决方案3】:

      只需进入 VisualStudio 工具 >> 选项 >>调试 >>JIT(Just-In-Time) 并禁用托管、本机和脚本复选框的检查。它已经解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-01
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多