我有一些类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;
}
答案 0 :(得分:0)
假设你有一个围绕读者的using
陈述,无论是否发生异常,它都会被处置。
以下是MSDN的解释:
using语句确保即使调用Dispose也会调用 在对象上调用方法时发生异常。您可以 通过将对象放在try块中来实现相同的结果 然后在finally块中调用Dispose;其实这是怎么回事 using语句由编译器翻译。