首页
学习
活动
专区
圈层
工具
发布

IDisposable
EN

Stack Overflow用户
提问于 2009-06-01 08:52:45
回答 3查看 576关注 0票数 0

我正在尝试调整一个类,以适应刚刚完成的工作,因为我无法解决这个问题。我的问题是如何识别关闭// CloseHandle (句柄)的句柄。我的问题是我不能适应下面的代码。

代码语言:javascript
复制
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;
        }
    } 
EN

回答 3

Stack Overflow用户

发布于 2009-06-01 08:56:21

您还没有展示任何实际使用该句柄的代码。您真的确定需要实现IDisposable并首先拥有一个句柄吗?您尝试使用的非托管资源是什么?

您是否只是在遵循您在其他地方看到的使用句柄的模式?您应该只在实际需要的时候实现IDisposable --而且现在实现终结器的情况应该非常少(因为您可以使用SafeHandle代替IntPtr来处理句柄)。

票数 2
EN

Stack Overflow用户

发布于 2009-06-01 08:58:04

您要关闭的句柄是什么?我看不到任何分配句柄的东西。

此外-在许多情况下,你可以使用SafeHandle来简化-我不知道这是否适用于你的情况,因为我看不出发生了什么……

票数 2
EN

Stack Overflow用户

发布于 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))创建的垃圾内存;**

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/934042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档