using 释放资源
我们知道使用C#程序访问数据库资源需要几个步骤:创建连接,打开连接,访问数据库,关闭连接,基本架构如下:
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
}
using 释放资源的更多相关文章
- COCOS2D 释放资源的最佳时机
有场景A跟场景B,场景A是当前场景,场景B是将要替换的新场景. 那么A场景的资源释放最佳时机是在什么时候呢? 这是释放资源的代码(注意要按这个顺序释放): 1 2 3 4 CCAnimationCac ...
- C++异常(exception)第三篇-------如何释放资源(没有finally语句)
问题: C++中没有finally,那么应该在哪里关闭资源? C++的try{}catch(){},为什么没有finally{}块来释放资源? 如类中的一个方法,局部变量 File * file=NU ...
- using 自动释放资源示例
我们在使用SqlConnection的时候可以加入using,那么在using语句结束后就会自动关闭连接.那么这种情况是怎么是实现的呢?我们能够自己写一个类似于SqlConnection的类来让usi ...
- c#:使用using关键字自动释放资源未必一定就会有明显好处
public string ToXML() { string strXml = string.Empty; try { MemoryStream ms = new MemoryStream(); Xm ...
- Spark2 jar包运行完成,退出spark,释放资源
import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.spark ...
- C#继承IDisposable释放资源
public class CDisposable : IDisposable { //析构函数,编译后变成 protected void Finalize(),GC会在回收对象前会调用调用该方法 ~C ...
- 【数据库】java链接jdbc 释放资源
/* * 编写快速 入门的jdbc 程序 : * * 1. 先导入 具体的驱动jar包 * 2. 编写一个类 , 写jdbc 的程序 * * 具体的编写 java类的 代码的 ...
- java7(3)——增强的catch之自动释放资源
跟mutilcatch一样,java7提供了自动释放资源的方法,但还是很少看到人使用,估计是麻烦去重写close方法.不过jdk内部一些类已经改成使用增强的catch来释放资源的写法,所以我们有必要了 ...
- C# 释放资源的规范写法
static class CSharp_3 { /* ---------------------------------------- * 以下学习资源的释放:IDispose和析构函数 * 1.ID ...
随机推荐
- jQuery模拟打字逐字输出代码
效果查看:http://hovertree.com/texiao/jquery/70/ jQuery键盘打出逐字逐句显示特效,逐字逐句显示文字 还可以设置每个文字随机颜色: http://hovert ...
- 关于在云服务器上部署tomcat笔记
tomcat无法启动的原因有:1.由于在tomcat里JVM没有配好,他默认的是批向c:\program file\Java下的那一个,如果你确认 这没有删掉,JVM指向你自己安装的jdk\jre试试 ...
- 【夯实PHP系列】PHP正则表达式
一. 概述 1. 正则表达式的测试地址: http://tool.chinaz.com/regex/ 二.具体的常用正则表达式 1. 邮箱正则表达式: 1)\w[-\w.+]*@([A-Za-z0-9 ...
- GJM :动作手游实时PVP 帧同步(客户端)[转载]
原帖地址:http://gad.qq.com/article/detail/7171195 原文作者:唐声福 原帖备注:版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 1.概述 1.1.基于U ...
- Ext.Net MVC 配置(2)
在VS2012中使用NuGet类库管理器配置EXT.NET MVC环境在“Ext.Net MVC 配置(1)”文章已经写到,方法很简单也很方便,但就是不知道它在安装这些库时对项目做了什么很不爽. 通过 ...
- 程序员用HTML5给女朋友制作的3D相册
程序员给女朋友用HTML5制作的3D相册,使用鼠标拖拽,能看到3D旋转效果,点击相片,相片能放大,移近.程序员发挥自己的专长,这是那些不懂编程的人望尘莫及的.本相册使用了HTML5的画布技术,需要谷歌 ...
- require 那点事
require 提供了一个 模块管理的方案 不太熟悉的话挺多暗坑 团队引入 需谨慎 彻底熟悉后 再引入项目 ADM规范 Asynchronous Module Definition - 异步加载模块规 ...
- 基础理解1:JSONP
首先要确认三点: 1.不要被名字误导,返回的格式是随意的string,int等 2.JSONP用的是Script标签跨域的特性 3.回调函数名字和请求参数问题,不要被众多文章中的callback误导, ...
- AJAX请求详解 同步异步 GET和POST
AJAX请求详解 同步异步 GET和POST 上一篇博文(http://www.cnblogs.com/mengdd/p/4191941.html)介绍了AJAX的概念和基本使用,附有一个小例子,下面 ...
- React Native常用组件Image使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...