[英]IDisposable
我正在尝试使一个班级无法解决问题,并且刚刚完成。 我的问题是如何识别要关闭的句柄// CloseHandle(句柄)。 我的问题是我无法适应以下代码。
for (Int32 i = 0; i < temp_items.Count; i++)
{
string conj_itens = temp_itens[i].ToString();
ContarSuporte cs= new ContarSuporte(matriz_bin,strExpr);
_cont = cs.Suporte;
If (_cont>100)
{
list.add(conj_itens);
}
}
public class ContarSuporte: IDisposable
{
private int _cont;
private bool disposed = false;
private IntPtr handle;
public ContarSuporte()
{
}
public ContarSuporte(DataTable matriz_binaria, string strExpr)
{
int c = matriz_binaria.Rows.Count;
this._cont = (int)(matriz_binaria.Compute("COUNT(TID)", strExpr));
}
~ContarSuporte()
{
Dispose(false);
}
public void Dispose()
{
//GC.Collect();
Dispose(true);
GC.SuppressFinalize(this);
// GC.Collect();
}
private void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
//this.Dispose();
}
//CloseHandle(handle);
handle = IntPtr.Zero;
}
disposed = true;
}
public int Suporte
{
get
{
return _cont;
}
set
{
_cont =value;
}
}
您尚未显示实际使用该句柄的任何代码。 您真的确定需要实现IDisposable
并首先拥有一个句柄吗? 您要使用什么非托管资源?
是你,或许只是下面你看到的其他地方这并使用手柄模式? 您仅应在实际需要时实现IDisposable
实现终结器的情况很少见(因为您可以使用SafeHandle
代替IntPtr
来处理句柄)。
您要关闭什么把手? 我看不到任何分配了手柄的东西。
另外-在很多情况下,您可以使用SafeHandle
简化操作-我无法确定这是否适用于您的情况,因为我看不到发生了什么...
_cont =(int)(matriz_binaria.Compute(“ COUNT(TID)”,strExpr)); 对于每个段落,问题不是增加内存的使用,我认为最主要的是因为它是垃圾。 我的想法是创建一个类以避免内存增长。 已经放置了_cont变量= 1且对内存没有影响,这会引发intrucção内存,并且每个段落的目的和效果都与清理使用此指令this._cont =(int )(matriz_binaria.Compute(“ COUNT(TID)”,strExpr)); **
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.