Подтвердить что ты не робот

Ли FileStreamResult закрывает поток?

Мой вопрос похож на этот вопрос: Есть ли файл() В asp.net mvc закрыть поток?

В С# MVC 4 есть следующее.

FileStream fs = new FileStream(pathToFileOnDisk, FileMode.Open);
FileStreamResult fsResult = new FileStreamResult(fs, "Text");
return fsResult;

Будет ли fs автоматически закрываться FileStreamResult? спасибо!

4b9b3361

Ответ 1

Да. Он использует блок using вокруг потока и гарантирует, что ресурс будет располагаться.

Вот внутренняя реализация метода FileStreamResult WriteFile:

protected override void WriteFile(HttpResponseBase response)
{
    Stream outputStream = response.OutputStream;
    using (this.FileStream)
    {
        byte[] buffer = new byte[0x1000];
        while (true)
        {
            int count = this.FileStream.Read(buffer, 0, 0x1000);
            if (count == 0)
            {
                return;
            }
            outputStream.Write(buffer, 0, count);
        }
    }
}