2009-08-25 72 views
1

对于.Net MemoryStream对象实例,是否需要在使用后明确关闭它?或者不需要关闭它?哪些是最佳做法?.Net MemoryStream关闭问题

我使用的是VSTS2008 + .Net 3.5 + C#。

回答

9

更好的办法是使用Using

using (MemoryStream ms = /*get it using your favorite ctor*/) 
{ 
    // use it here 

    // and now flush and copy to a file stream (for example) 
    ws.Flush(); 
    byte[] buffer = ws.ToArray(); 
    using (Stream stream = new FileStream("fileName", FileMode.Create)) 
     stream.Write(buffer, 0, buffer.Length); 
} 

小提醒 - 如果你打算给它的所有写入到另一个流末,不要” t忘记Flush()(并且不要让马桶座位离开)。

我在ms周围使用StreamWriter,将文本数据写入内存,并最终将所有内容放在光盘上。 (如果你愿意的话,我也可以把这个例子改成这个例子)

+0

“最后把它写入另一个流中” - 你能给我看一个样品吗?你什么意思是“最后流入另一个流”? – George2 2009-08-25 04:38:56

+1

为什么要刷新内存流?此方法的评论是:“重写Flush以便不执行任何操作。” – 2010-01-22 12:18:26

+0

我想我从'StreamStreamer'的'MemoryStream'的用法复制了代码,并且我正在刷新'StreamWriter'实例,以确保写入它的所有文本在读取之前都在MemoryStream的“内部”阵列。 我记得起初没有刷新,并得到了不包含所有预期数据的文件。 – 2010-01-24 14:49:28