Стартовая страницаНовостиОшибка "Недопустимый параметр" при чтении/записи массива байтов из потока
Читайте также:

Ошибка "Недопустимый параметр" при чтении/записи массива байтов из потока

Для того чтобы загрузить аватарки в Active Directory сделал маленькую тестовую утилиту. В процессе отладки заметил странную ошибку.
Она возникала при загрузке полученного из другого потока массива байтов. Текст сообщения был кратким, странным и непонятным - "Недопустимый параметр".
Кусок кода представлен ниже. Ошибка возникала в третьей строке.
System.IO.MemoryStream _ms = new System.IO.MemoryStream();
_ms.Write(image, 0, image.Length);
Bitmap b = System.Drawing.Image.FromStream(_ms) as Bitmap;
pictureBox1.Image = b;
pictureBox1.Refresh();
Как выяснилось к ошибке приводило указание длинны считываемых байтов в массив byte[] image через длинну потока из которого считывались байты.
Вот так:
byte[] image = new byte[(int)ms.Length];
ms.Read(image, 0, (int)ms.Length);
Если сделать так то ошибка исчезает.
byte[] image = new byte[fs.Length];
fs.Read(image, 0, image.Length);
Длинна потока и длинна массива – одно и тоже число. Диапазоны типов long и int идентичны и преобразуются неявно.
На уровне интуиции понимаю в чем причина, но на уровне логики -нет.
 

 

Пока еще нет ни одного комментария. 

Дима Кононов © - разработка сайтов и порталов.


Функционирует с 2013 года. Версия 3.0
Разработка и дизайн: Кононов Дмитрий
Комментарий: У меня есть, что сказать по этому поводу, но я лучше промолчу.
Сейчас зарегистрированных посетителей на сайте: 0 Посмотреть подробнее...
Новостная лента RSS 2.0

Вверх