我查看了 MSDN 文档,并在此代码片段中采用了推荐的模式:
BitmapSymbols temp = null;
try {
using (var source = bitmaps.Symbols) {
temp = new BitmapSymbols(source, sizeSymbols);
}
_bitmapSymbols = temp;
temp = null;
} finally {
if (temp!=null) temp.Dispose();
}
有谁知道为什么temp
在这种情况下被报道?我看不到任何未处理temp
且未设置为“null”的执行路径。提前感谢您的任何帮助。
如果我在 using 中来回移动分配,temp
则会从 FxCop 生成相同的警告。
该类BitmapSymbols
实现IDisposable
, 并且是多个位图集合的包装器,可确保同时释放它们。
更新:
问题提出如下:
无论如何,我不明白你为什么想出这段代码而不是简单地使用:
_bitmapSymbols = new BitmapSymbols(source, sizeSymbols);
原因是如果发生异常,不遵循该模式可能会导致内存泄漏。我正在编写一个游戏,用户可能会运行数小时或数天而无需重新启动,因此避免内存泄漏对于稳定性很重要。