c#纠正内存清除或其他什么

时间:2013-10-03 17:37:36

标签: c# testing memory allocation garbage

我有一些类ByteBitmap,它包含私有字段byte []字节。 主类Reader具有ByteBitmap的变量(如缓存)。 Reader实现了IDisposable。

我的问题是变量在测试期间破坏了Reader的正确工作。 我有> 2000测试和这个变量打破了其中的一些。 如果我删除此缓存变量测试没问题。

在我的情况下,做什么是正确的方法?

PS如果我运行包含此变量的单一测试 - 测试运行正常。

   ByteBitmap _byteBitmapCache;
   internal override ByteBitmap GetByteBitmap()
    {
        if (byteBitmapCache != null)
           return byteBitmapCache;
        _byteBitmapCache = new ByteBitmap(_width, _height);
        for (int i = 0; i < _width; ++i)
            for (int j = 0; j < _height; ++j)
                _byteBitmapCache[i, j] = _binarizedBitmap.GetXy(i, j); // faster

        return _byteBitmapCache;
    }

1 个答案:

答案 0 :(得分:0)

假设你有一个围绕读者的using陈述,无论是否发生异常,它都会被处置。

以下是MSDN的解释:

  

using语句确保即使调用Dispose也会调用   在对象上调用方法时发生异常。您可以   通过将对象放在try块中来实现相同的结果   然后在finally块中调用Dispose;其实这是怎么回事   using语句由编译器翻译。