为什么要丢弃分配给静态变量的sqlliteconnection
本文关键字:静态 变量 sqlliteconnection 分配 为什么 | 更新日期: 2023-09-27 18:26:38
我将sqlliteconnection对象分配给静态变量,并在函数中初始化它。
在某些情况下访问sqlliteconnection对象时,它会抛出"sqlconnection对象已释放"异常。据我所知,只有在应用程序关闭时才会处理静态变量。
样本代码:
public static SQLLiteConnection sql;
public void OpenConnection()
{
sql = new SQLLiteConnection ;
//assign sql lite file path
sql.Open();
}
public void GetStud()
{
OpenConnection();
//writing sqlcommand connection
}
}
即使在静态对象上也可以调用Dispose()。它的目的是释放非托管资源(托管资源由GC自动释放)。Dispose不是仅在应用程序关闭后调用的。它通常是在没有引用该对象时从终结器方法(由GC调用)自动调用的。它也在使用块的末尾被调用。
无论如何,静态SqlConnection对象不是一个好主意。最好总是用"using"创建新实例。
using (var conn = new SQLLiteConnection("connectionstring"))
{
conn.Open();
}//here is called Dispose()