在处理后调用MemoryStream.ToArray()是危险的吗?
在下面的代码中,GC是否有可能清除MemoryStream以使ToArray失败,因为它在using语句之外?
private static byte[] getBytes() { MemoryStream ms = null; using (ms = new MemoryStream()) { // ... } return ms.ToArray(); }
不,那是不可能的。 这样做是安全的 – MemoryStream
保持对字节数组的强引用。
我会看看能否找到有关保证的文件……
编辑:排序……
来自MemoryStream.Close
:
关闭流后,缓冲区仍可在
MemoryStream
上使用。
不可否认,它不能保证Dispose
,但记录下来调用Stream.Close
。
然后可以重写MemoryStream.Dispose(bool)
来释放数组,但根据我的经验,这并不是一个突破性的变化。
- IsOrderedBy扩展方法
- 即使未调用System.Transactions.TransactionScope.Commit(),也会提交数据
- 创建新的Microsoft.CodeAnalysis.CustomWorkspace – 得到了ReflectionTypeLoadException
- MongoDb C#GeoNear查询构建
- 在DataTemplate中调用Storyboard
- entity framework只读集合
- C#:使用Winforms关闭SerialPort的正确方法
- WPF Caliburn.Micro / mvvm导航
- 当货币值为0.00美元时,C#创建自定义NumberFormatInfo以显示“Free”