.Net Framework 数据提供程序错误

来源:互联网 发布:java笔试题目 编辑:程序博客网 时间:2024/05/15 03:49
析构函数中调用SqlConnection对象的Dispose()方法就会出现这个异常,但是在其他地方不会。搜索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内部会有独立的线程。
原创粉丝点击