Почему при выходе или возврате значения из под инструкции
using происходит запись файла с потерями данных.
К примеру вот код архивации, в 1 случае все ок и к примеру сжатый архив 100кб и может быть восстановлен обратно, а во втором случае сжатый архив 80 и поврежден.
Почему так.
public MemoryStream GZipCompress(MemoryStream memoryStream)
{
var newStream = new MemoryStream((int)memoryStream.Length / 2); //set to estimate of compression ratio
using (GZipStream compress = new GZipStream(newStream, CompressionMode.Compress,true))
{
memoryStream.CopyTo(compress);
}
// Вот так все отлично
newStream.Position = 0;
return newStream;
}
Тут происходит потеря данных и данные будет не восстановить, возврат из под using
public MemoryStream GZipCompress(MemoryStream memoryStream)
{
var newStream = new MemoryStream((int)memoryStream.Length / 2);
using (GZipStream compress = new GZipStream(newStream, CompressionMode.Compress,true))
{
memoryStream.CopyTo(compress);
// а вот так сжатие ошибочное
newStream.Position = 0;
return newStream;
}
}