gpt4 book ai didi

.net - 检测是否调用了垃圾收集器(.Net)

转载 作者:行者123 更新时间:2023-12-04 17:58:45 24 4
gpt4 key购买 nike

使用 SqlConnection 时,务必在使用时关闭它 - 通过 .Close() 或将 SqlConnection 置于“使用”中。不幸的是,包括我自己在内的人们往往会忘记这一点,这就是垃圾收集器暂时拯救我的地方,直到我忘记关闭我的连接太多次或使用该应用程序的人数增加。

如果可能的话,我想知道如何检测垃圾收集器是否处理了 SqlConnection,因为它认为它不再使用,或者 SqlConnection 是否以正确的方式关闭。

另一种方法可能是继承 SqlConnection 并在其初始化程序上放置一个计时器,并检查在处理类时关闭连接需要多长时间。我真的不喜欢计时器,但这个想法是在写这篇文章的时候出现的。

也许有第三种甚至更聪明的方法来解决这一切......你会推荐什么?

最佳答案

由于 SqlConnection 是密封的,您将无法从它继承。 (而且我认为这样做不是一个好主意——如果可能的话,您可能应该在 Dispose(false) 中添加您的代码,因为这是终结器所调用的)。
最好使用静态代码分析工具来检测此类问题,该工具能够检测代码中您忘记处理连接的所有位置。有一个内置in Visual Studio , 或者您可以使用 FxCop .
为了帮助您不要忘记处理连接,最好:

  • 将所有数据库连接代码保存在一层/程序集/模块中,因此不会分散在项目中。
  • 具有执行 SQL 命令并返回结果的实用方法;因此,您创建的 SQLConnection 位置不会超出您的需要。
  • 记得使用 C# using construct .
  • 关于.net - 检测是否调用了垃圾收集器(.Net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143532/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com