看到别人写的代码,有以下的Dispose(),不知何用?高手给讲一讲。
就是系统何时会调用到它,调用时会怎样?谢谢!
protected override void Dispose(bool disposing)
{
if (m_lRealHandle >= 0)
{
CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
}
if (m_lUserID >= 0)
{
CHCNetSDK.NET_DVR_Logout_V30(m_lUserID);
}
if (m_bInitSDK == true)
{
CHCNetSDK.NET_DVR_Cleanup();
}
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
就是系统何时会调用到它,调用时会怎样?谢谢!
protected override void Dispose(bool disposing)
{
if (m_lRealHandle >= 0)
{
CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
}
if (m_lUserID >= 0)
{
CHCNetSDK.NET_DVR_Logout_V30(m_lUserID);
}
if (m_bInitSDK == true)
{
CHCNetSDK.NET_DVR_Cleanup();
}
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
.NET运行的代码在一个进程,数据库运行在另外一个进程
.NET访问数据库 .Open()
接下来.net代码本来是想进行一些查询的,但自己的代码出错了~运行不下去了
所以数据库被Open后,一直在等待~在等待~....所以非托管资源基本上不是和.NET应用程序在同一个进程,
因为在同一个进程的话,.NET的垃圾回收机制会监控它不要让别人等待下去,记得释放~
最好用上finnaly,就是代码错了,也要释放~