有些资源,申请了,用完了,就要释放掉,比如文件打开后,要关闭, 数据库打开后,要关闭.
一般是这样
XX xx = null;
try{
xx.Open();
} finally {
if (xx != null) {
xx.Dispose();
}
}
其中Dispose()方法 是接口IDispose的方法.
你可以认为写上
using (XX xx = ...) {
这里尽情地用吧!
}
它就像上面写的try finally一样..
using() { }
()里声明的变量在{}语句体执行完后就将对象回收,优化内存资源管理
1
using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ACCOUNT, signOnParms)) {
2
3
4
5
using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING_NON_DTC)) {
6
conn.Open();
7
using (SqlTransaction trans = conn.BeginTransaction()) {
8
try {
9
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_SIGNON, signOnParms);
10
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_ACCOUNT, accountParms);
11
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_PROFILE, profileParms);
12
trans.Commit();
13
14
}catch {
15
trans.Rollback();
16
throw;
17
}
18
}
19
}
using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ACCOUNT, signOnParms)) {2

3

4

5
using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING_NON_DTC)) {6
conn.Open();7
using (SqlTransaction trans = conn.BeginTransaction()) {8
try {9
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_SIGNON, signOnParms);10
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_ACCOUNT, accountParms);11
SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_PROFILE, profileParms);12
trans.Commit();13
14
}catch {15
trans.Rollback();16
throw;17
}18
}19
}


浙公网安备 33010602011771号