我正在尝试调整一个类,以适应刚刚完成的工作,因为我无法解决这个问题。我的问题是如何识别关闭// 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;
}
} 发布于 2009-06-01 08:56:21
您还没有展示任何实际使用该句柄的代码。您真的确定需要实现IDisposable并首先拥有一个句柄吗?您尝试使用的非托管资源是什么?
您是否只是在遵循您在其他地方看到的使用句柄的模式?您应该只在实际需要的时候实现IDisposable --而且现在实现终结器的情况应该非常少(因为您可以使用SafeHandle代替IntPtr来处理句柄)。
发布于 2009-06-01 08:58:04
您要关闭的句柄是什么?我看不到任何分配句柄的东西。
此外-在许多情况下,你可以使用SafeHandle来简化-我不知道这是否适用于你的情况,因为我看不出发生了什么……
发布于 2009-06-01 10:32:32
这个想法是为了完成这条指令this._cont =(matriz_binaria.Compute)(matriz_binaria.Compute(“(TID)”,));对于每一段,问题不是增加内存的使用,我认为最重要的是它是垃圾。我的想法是创建一个类来避免内存的增长。已经放置了计数变量=1,对内存没有影响,这会引起内存占用的问题,每一段的目的和效果都是为了清理这个指令this._cont =( _cont )(matriz_binaria.Compute(“COUNT(TID)”,strExpr))创建的垃圾内存;**
谢谢
https://stackoverflow.com/questions/934042
复制相似问题