using 释放资源
2016-05-09 13:59
274 查看
我们知道使用C#程序访问数据库资源需要几个步骤:创建连接,打开连接,访问数据库,关闭连接,基本架构如下:
数据库连接通常建立在通常有限的服务器资源,所以释放之后要及时关闭。
在代码中,finally块中调用Close()方法释放连接,确保即使没有异常发生,连接诶也能被释放。
using 语句两个作用:
作为关键字,using可以导入命名空间。
作为C#语句,using可以释放对象的占有的内存资源。
基本语法如下:
using(SqlConnection conn = new SqlConnection(connString))
{
//数据库代码操作
}
using语句允许用户定义一个范围,并在范围末尾处释放对象。
using可以主动释放的对象都需要实现IDisable接口。
即使都实现了IDisable接口,也没有必要全部使用using。我们只对那些对系统性能有重要影响的对象进行using限定,而其他对象可以交给垃圾回收器处理。
(1)此类实现了接口IDisposable(这个接口只有一个方法void Dispose()),当这个类在using中实例化的时候,using代码块结束时会自动调用这个类中实现了接口IDisposable的Dispose()方法。Dispose()方法中常用来做些释放资源的动作。
看看下面的一个简单的例子:
输出结果如下:
SqlConnection conn = new SqlConnection(connString) try { conn.Open(); //省略访问数据库代码.. } catch (Exception ex) { throw ex; } finally { conn.Close(); }
数据库连接通常建立在通常有限的服务器资源,所以释放之后要及时关闭。
在代码中,finally块中调用Close()方法释放连接,确保即使没有异常发生,连接诶也能被释放。
using 语句两个作用:
作为关键字,using可以导入命名空间。
作为C#语句,using可以释放对象的占有的内存资源。
基本语法如下:
using(SqlConnection conn = new SqlConnection(connString))
{
//数据库代码操作
}
using语句允许用户定义一个范围,并在范围末尾处释放对象。
using可以主动释放的对象都需要实现IDisable接口。
即使都实现了IDisable接口,也没有必要全部使用using。我们只对那些对系统性能有重要影响的对象进行using限定,而其他对象可以交给垃圾回收器处理。
(1)此类实现了接口IDisposable(这个接口只有一个方法void Dispose()),当这个类在using中实例化的时候,using代码块结束时会自动调用这个类中实现了接口IDisposable的Dispose()方法。Dispose()方法中常用来做些释放资源的动作。
看看下面的一个简单的例子:
using System; class Program { public static void Main(string[] args) { using (Test test = new Test()) { Console.WriteLine("Disposable is open!"); } Console.WriteLine("Disposable is none!"); Console.ReadKey(); } } public class Test:IDisposable { #region IDisposable 成员 public void Dispose() { Console.WriteLine("Disposable is close!"); } #endregion }
输出结果如下:
Disposable is open! Disposable is close! Disposable is none!
相关文章推荐
- GIS简单计算Helper类
- UVALive 6609 Minimal Subarray Length(最大子段)
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- 数据模型代码
- 【BZOJ3110】【codevs1616】K大数查询,权值线段树套普通线段树
- 2016.5.8 PKU校赛总结
- 栈实现队列,链表实现栈
- PostgreSQL修改数据库表的列属性(ALTER语句)
- Android开发中将状态栏改变成透明颜色
- Android通用流行框架大全
- 微信支付SDK-两行代码解决支付
- 2.1.第五个实验--数码管测试段码
- 用户手势检测-GestureDetector使用详解
- PHP Excel 下载数据,并分页下载
- 判断ListView到达顶端的方法
- 10.Binder进阶:系统服务中的Binder
- ios个人开发者账号 身份证上传不上去
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- 1.5.第四个实验--跑马灯
- 电阻屏的福音