2

我在 64 位 Windows 上使用带有 .Net 连接器的 MySQL。出于某种原因,Mysql 在 Finalize 中抛出了 NullReferenceException。这是这里的问题,似乎是由于这里描述的错误。这个错误是在 6.22 中报告的,但我也遇到了 6.23 的问题,所以显然它没有修复。

我将 MySQL 与辅助类一起使用,并通过实例化连接和 Mysqlcommand 对象。

有人知道我需要更改代码的哪一部分来解决此问题吗?因为即使这是 Mysql 中的一个错误,这也不是通用的,因为我在其他项目中没有遇到问题。MySQL 错误报告也没有关于如何重现它的详细信息。

有什么建议么?

4

2 回答 2

1

如果您调用(或将DisposeMySqlConnection包装在 中using),那么理论上不应调用终结器,至少在MySqlConnection正确实施的情况下是这样。

如果您正在这样做并且它仍然被调用,那么您必须查看源代码并查看它是否在做任何有用的事情。如果没有,你可以调用GC.SuppressFinalize()它。如果是,您可以继承MySqlConnection、覆盖其Finalize()方法并吞下基方法抛出的异常。显然,这两种方法都是主要的黑客攻击,只是解决方法,而不是修复。

于 2010-06-07T05:01:42.110 回答
1

什么工作:我确实怀疑 MySQL 连接没有像他们应该的那样很好地实现 MySql 阅读器,但我不确定。在Evegeny 的回答之后,我决定进行更深入的检查。所以我安装了那个很棒的软件reflector pro的演示版,并直接钻入了MySQL数据连接器的源代码,它确实是MySQL数据连接器中的一个错误。

摆脱用于获取 MySqlDataReader 对象的 MySQL Helper,事情将再次变得很酷。

谢谢叶甫根尼。

更多细节在这里

于 2010-06-07T06:15:40.090 回答