zoukankan      html  css  js  c++  java
  • 析构函数中调用 Dispose 报错 :Internal .Net Framework Data Provider error 1.[非原创]

    搜索MSDN的资源可以找到答案: 

    原文如下
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=473449&SiteID=1 
    以下是关于SqlDataReader.CLose()方法的解释: 
    http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.close.aspx 
    注意这段文字: 
    Do not call Close or Dispose on a Connection, a DataReader, or any other managed object in the Finalize method of your class. In a finalizer, you should only release unmanaged resources that your class owns directly. If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. (不要再析构函数中调用Connection, DataReader,或其他托管对象的Close()或Dispose()方法,析构函数中应当只是放类的非托管成员,如果类中不包含非托管成员不要创建析构函数。)

    这类问题通常由于跨线程访问了非线程安全的对象,即便你没有显示声明一个线程,但是CLR内部会有独立的线程。

    建议直接实现 IDisposable 接口并在使用完对象之后调用Dispose方法即可(需要释放的对象自己要在Dispose方法中实现)

      

  • 相关阅读:
    Maven2-profile多环境配置
    Maven-setting.xml详解
    Maven-通过命令操作maven项目
    Maven-eclipse运行maven命令
    Eclipse-导入maven项目
    Maven-搭建maven web项目
    Maven-搭建普通maven项目
    Maven-pom.xml详解
    Maven-生命周期
    Maven-常用命令
  • 原文地址:https://www.cnblogs.com/itstac/p/10868230.html
Copyright © 2011-2022 走看看