TO:qimini(循序渐进) :
出错的函数所在的类已经继承自IDisposeable,如下:
public class DbConnect : IDisposable
{
...
protected virtual void Dispose(bool Disposing)
{
//TODO:释放所有的类成员变量
if(! Disposing)
{
return;
}
// 显式关闭FOledbConnection连接,并将连接返回池中。
if(FConnection != null)
{
/*if(FConnection.State == ConnectionState.Open)
{
FConnection.Close();
}*/
FConnection.Dispose();
//FConnection = null;
}
}
...
}
出错的函数所在的类已经继承自IDisposeable,如下:
public class DbConnect : IDisposable
{
...
protected virtual void Dispose(bool Disposing)
{
//TODO:释放所有的类成员变量
if(! Disposing)
{
return;
}
// 显式关闭FOledbConnection连接,并将连接返回池中。
if(FConnection != null)
{
/*if(FConnection.State == ConnectionState.Open)
{
FConnection.Close();
}*/
FConnection.Dispose();
//FConnection = null;
}
}
...
}
解决方案 »
- 请大家帮忙解决一下
- WPF浏览器调试默认是非IE浏览器,删除其他浏览器后,无法调试
- 如何重写ListView控件在单元格内增加LinkLable控件
- c# 如何給巨集傳參數?
- 请问怎么将treeview中的结点拖拽到datagrid中的某个单元格中?
- C# winform中使用C++开发的控件
- WCF服务主机能作为启动项吗
- 急!怎样判断鼠标的左右键同时被按下?
- 请问题一个水晶报表问题
- 如何实现象C#那样的界面,如单击工具栏中的一项,使主界面的内容发生改变,怎样设置Form之间的关系呢?
- 怪问题,自己的机子上是正常的,可在测试时提示Formabout_Load事件里“System.NullReferenceException”对象未实例化
- 我下了一个Rational XDE.NET 2002,可是在.net里的菜单是灰的请问有谁会用
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if(!this.disposed)
{
if(disposing)
{
}
if(FConnection != null)
{
FConnection.Dispose();
}
}
disposed = true;
}
万分感谢您的解答,但是依照您的思路我重新改了代码以后,调试错误仍然出现,错误出现时光标停留在disposed = true; 这一行。我将DbConnect类的全部源码贴在下面,请您再帮忙看看。谢谢! public class DbConnect : IDisposable
{
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
private OleDbConnection FConnection;
private bool disposed;
//-----------------------------------------------------------------------
public string IniReadValue(string Section,string Key)
{
string SystemDirectory;
StringBuilder temp = new StringBuilder(255); SystemDirectory=System.Environment.SystemDirectory;
int i = GetPrivateProfileString(Section,Key,"",temp,255,SystemDirectory+"\\DB_PTERP.ini");
return temp.ToString();
}
//-----------------------------------------------------------------------
public string DataBase()
{
string ReturnText;
ReturnText="provider=SQLOLEDB;data source="+IniReadValue("DataBase","data source")
+";initial catalog="+IniReadValue("DataBase","catalog")+";user id="
+IniReadValue("DataBase","user id")+";password="+IniReadValue("DataBase","password");
return ReturnText;
}
//-----------------------------------------------------------------------
public DbConnect()
{
// TODO: 构造函数逻辑
FConnection = new OleDbConnection();
}
//-----------------------------------------------------------------------
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
//-----------------------------------------------------------------------
protected virtual void Dispose(bool Disposing)
{
//TODO:释放所有的类成员变量
if(!this.disposed)
{
if(Disposing)
{
}
// 显式关闭FOledbConnection连接,并将连接返回池中。
if(FConnection != null)
{
FConnection.Dispose();
}
}
disposed = true;
}
//-----------------------------------------------------------------------
protected bool ConnectToDb()
{
// 数据库的连接字串
string DbConnectStr=DataBase();
try
{
// TODO: 连接到数据库
FConnection.ConnectionString = DbConnectStr;
FConnection.Open();
return true;
}
catch(System.Exception)
{
return false;
}
}
//-----------------------------------------------------------------------
//属性: 得到到数据库的连接
protected OleDbConnection DbConnection
{
get {return FConnection;}
}
}
未处理的“System.InvalidOperationException”类型的异常出现在 mscorlib.dll 中。其他信息: 句柄未初始化。
protected OleDbConnection DbConnection
{
get
{
if(this.FConnection!=null)
return FConnection;
else
throw new NullObjectRefrenceExceptoin("Object is not exsit");<<<<<NullObjectRefrenceExceptoin忘了是哪个类了,空引用错误类
}
}
2、去掉API的调用,测试一下有无错误
按您给的方法还是出现同样的错误。