.Net MemoryStream закрыть вопрос - PullRequest
       15

.Net MemoryStream закрыть вопрос

1 голос
/ 25 августа 2009

Для экземпляра объекта .Net MemoryStream нужно ли его явно закрывать после использования? Или нет необходимости его закрывать? Какие лучшие практики?

Я использую VSTS2008 + .Net 3.5 + C #.

Ответы [ 2 ]

9 голосов
/ 25 августа 2009

Еще лучше было бы использовать 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);
}

Небольшое напоминание - если вы планируете записать все это в другой поток в конце, не забудьте Flush() (И не оставляйте сиденье унитаза вверх).

Я использую StreamWriter вокруг ms, чтобы записать текстовые данные в память, и в конце записал все это на диск за один раз. (Я также могу изменить пример здесь на этот случай, если хотите)

2 голосов
/ 25 августа 2009

вы должны закрыть его, когда закончите. Лучше всего закрыть поток в секции finally блока try-catch-finally. Вы можете получить больше информации здесь:

http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx

...