C# 可识别

C# 可识别,c#,.net,idisposable,C#,.net,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)

我正在努力使一个班级适应刚刚结束的工作,我无法解决这个问题。 我的问题是如何识别要关闭的句柄//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;
        }
    } 
for(Int32 i=0;i100)
{
列表。添加(连接);
}
} 
公共类扭曲:IDisposable
{
私人内部控制;
私有布尔=假;
私有IntPtr句柄;
公共扭曲
{ 
} 
公共扭曲(数据表matriz_binaria,字符串strExpr)
{
int c=matriz_binaria.Rows.Count;
这个._cont=(int)(matriz_binaria.Compute(“COUNT(TID)”,strExpr));
} 
~contarsuport()
{
处置(虚假);
} 
公共空间处置()
{
//GC.Collect();
处置(真实);
总干事(本);
//GC.Collect();
} 
私有无效处置(bool处置)
{
如果(!this.disposed)
{
如果(处置)
{
//这个。Dispose();
}
//关闭手柄(手柄);
handle=IntPtr.Zero;
}
这是真的;
} 
公共内部支持
{
得到
{
返回(续);
}
设置
{
_cont=数值;
}
} 

您没有显示任何实际使用句柄的代码。您真的确定需要实现
IDisposable
并首先拥有句柄吗?您试图使用哪种非托管资源


您可能只是遵循了您在其他地方看到的使用句柄的模式吗?您应该只在实际需要时实现
IDisposable
,而现在实现终结器应该非常少见(因为您可以使用
SafeHandle
而不是
IntPtr
来处理句柄).

您没有显示任何实际使用句柄的代码。是否确实需要实现
IDisposable
并首先拥有句柄?您试图使用的非托管资源是什么


您可能只是遵循了您在其他地方看到的使用句柄的模式吗?您应该只在实际需要时实现
IDisposable
,而现在实现终结器应该非常少见(因为您可以使用
SafeHandle
而不是
IntPtr
来处理句柄).

您试图关闭哪个句柄?我看不到任何分配句柄的内容


此外-在许多情况下,您可以使用
SafeHandle
简化此操作-我无法判断这是否适用于您的情况,因为我看不到发生了什么…

您试图关闭哪个句柄?我看不到任何分配句柄的操作


此外,在许多情况下,您可以使用
SafeHandle
来简化此操作-我无法判断这是否适用于您的情况,因为我看不出发生了什么…

想法是完成此指令此操作。_cont=(int)(matriz\u binaria.Compute(“COUNT(TID)”,strExpr))对于每一篇文章,问题不在于增加内存的使用,我认为这是因为它是垃圾。 我的想法是创建一个类来避免内存的增长。已经放置了_cont变量=1,并且对内存没有影响,这会产生intrucção内存的问题,每个段落的目的和效果都是为了清理用这个指令创建的垃圾内存。_cont=(int)(matriz_binaria.Compute)(“计数(TID)”,strExpr));**


感谢

我们的想法是完成这条指令这条指令。_cont=(int)(matriz_binaria.Compute(“COUNT(TID)”,strExpr));对于每一篇文章,问题不在于增加内存的使用,我认为大部分是因为它是垃圾。 我的想法是创建一个类来避免内存的增长。已经放置了_cont变量=1,并且对内存没有影响,这会产生intrucção内存的问题,每个段落的目的和效果都是为了清理用这个指令创建的垃圾内存。_cont=(int)(matriz_binaria.Compute)(“计数(TID)”,strExpr));**


感谢

感谢您的回复,问题就在这里,在许多段落中,lopp是由数据生成的,并且在内存中产生了许多我无法控制的垃圾,我如何控制这些垃圾。_cont=(int)(matriz_binaria.Compute(“COUNT(TID)”,strExpr));在内存中创建大量对象与需要IDisposable或句柄完全不同。再说一次:您是否有任何需要处置的非托管资源?感谢您的回复,问题就在这里,在许多由数据生成的lopp中,正在内存中创建大量我无法控制的垃圾,我如何控制这些垃圾这就是。_cont=(int)(matriz_binaria.Compute(“COUNT(TID)”,strExpr));在内存中创建大量对象与需要IDisposable或句柄完全不同。再说一次:您是否有任何需要处置的非托管资源?