其他分享
首页 > 其他分享> > CodeGo.net>如何找到未关闭的DataReader?

CodeGo.net>如何找到未关闭的DataReader?

作者:互联网

我在ASP.Net 1.1中维护着一个大型应用程序,该应用程序已被许多人(包括学生)更改.显然,该代码很少被审查,因此它有很多……错误……愚蠢的错误.问题最多的是永不关闭的DataReader.
到处都有,每页最多十个.由于该项目大约有一百个页面,其中包含300个类,因此我很沮丧地想找到所有未关闭的DataReader.

我知道这是没有希望的,但是有找到所有未封闭的DataReader的简便方法吗?某些软件或Visual Studio 2003进行了调整…

解决方法:

嗯,使用DataReader的“正确”方法是

using (SqlDataReader dr = ...) {
    ...
}

要么

SqlDataReader dr = ...
try {
    ...
} finally {
    dr.Close();
}

因此,简单的解决方案是对SqlDataReader和IDataReader进行全项目搜索.如果是

>不在using子句中或
>没有立即跟随尝试

那么最有可能使用不正确,需要对其进行修复.

请注意以下代码:

SqlDataReader dr = ...
...
// do something
...
dr.Close();

是不正确的,因为在执行某操作期间引发的异常将使DataReader保持打开状态.

标签:datareader,c
来源: https://codeday.me/bug/20191102/1994479.html