Управление memoryStream при загрузке файлов из BLOB-объекта Azure - PullRequest
0 голосов
/ 07 октября 2019

Я работаю над созданием оболочки для загрузки файлов из хранилища BLOB-объектов Azure. У меня есть простая модель для файла

public class File
{
    public Stream Data { get; set; }
    public string Name { get; set; }
    public string Path { get; set; }
    public long Size { get; set; }
}

Мой метод загрузки файла выглядит следующим образом

private async Task<File> GetFile(string name, string path = null)
{
    var blockBlob = _container.GetBlockBlobReference(GetKey(name, path));
    await blockBlob.FetchAttributesAsync();

    var memoryStream = new MemoryStream();
    await blockBlob.DownloadToStreamAsync(memoryStream).ConfigureAwait(false);
    memoryStream.Position = 0;

    return new File(
        name: name,
        path: path: blockBlob.Uri.ToString(),
        data: memoryStream,
        size: blockBlob.Properties.Length);
}

Вопрос: нормально, что я создаю memoryStream и никогда не удаляю его? Должен ли я передать memoryStream в качестве параметра и перенести ответственность за время жизни для вызывающей стороны? Если да, то как я могу сделать это с моделью мю?

1 Ответ

1 голос
/ 08 октября 2019

MemoryStream не требует явного удаления в соответствии с документами (см. Примечание в docs.microsoft.com / en-us / dotnet / api /… ), так что ваш текущий дизайн в порядке.

...