2013-05-30 6 views
-3

Я создал класс для управления последовательными портами, который позволяет мне отправлять код ПЗУ на виртуальную машину, работающую на роботе.Размер массива байтов [] изменяется во время выполнения в C#

Это заявление:

public byte[] mensaje_a_enviar = new byte[4097]; 

Иногда я посылаю только 20 байт или меньше, но иногда я должен отправить 4097 байт только один выстрел ...

Странная проблема заключается в том, что этот байт массив изменяет размер до меньшего (например, 10 байтов) во время выполнения. Это, очевидно, бросает мне исключение переполнения, когда я пытаюсь снова заполнить 100 байтов ...

У меня есть только один экземпляр этого класса в моей программе.

Почему это могло произойти?

+3

показать нам код, в котором вы фактически пытаетесь отправить, а также трассировку стека. – Woot4Moo

+2

'Странная проблема заключается в том, что этот байтовый массив меняет размер на меньшее (например, 10 байтов) во время выполнения.' Нет, никогда. Ты так думаешь. – I4V

+0

Что-то вызывает «mensaje_a_enviar =» где-то во время вашего выполнения. Вероятно, вам понадобится опубликовать больше кода, чтобы получить помощь по этой проблеме. –

ответ

2

Где-то в вашем коде у вас есть

mensaje_a_enviar = //Somthing 

или

SomeFunction(ref mensaje_a_enviar) 

Тогда внутри SomeFunction у вас есть что-то вроде первой линии.

что эти два примера делают замену массива новым массивом, возвращаемым из того, что находится справа от знака равенства. Вы должны передавать массив только как параметр функции без использования ссылки (SomeFunction(mensaje_a_enviar)) или получать доступ к элементам с помощью индексатора (mensaje_a_enviar[i]).

Проверьте свой код и посмотрите, где вы используете один из двух фрагментов кода, который у меня был выше.

Смежные вопросы