Последовательный порт чтения + темы или что-то лучше?

Я не знаю, является ли это хорошим способом работы со стеком для этой задачи, но я уверен, что есть более быстрый способ ... Я получаю данные из своего микроконтроллера, но длина данных не всегда одинаковой длины. Я подумал, может быть, я могу поместить данные в свой стек и в потоке я могу вытолкнуть их и декодировать сообщение. Я не хотел замедлять DataReceivedHandler, поэтому я создал поток, который может извлекать данные и записывать их в мой Listview в моей функции decodeMessage ().

Через некоторое время я получаю исключение System.OutOfMemories ..

Любые идеи, как я могу сделать это лучше?

Я читаю с моего последовательного порта, когда данные поступают сюда:

Stack<byte[]> stack = new Stack<byte[]>();

.....

public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    byte[] data = new byte[sp.BytesToRead];
    sp.Read(data, 0, data.Length);

    stack.Push(data);
}

И это моя тема:

private void formatData()
{
    try
    {
        while (true)
        {
            byte[] data;
            int i=0;

            Dispatcher.BeginInvoke(new Action(() =>
            {
                while (stack.Count > 0)
                {
                    data = stack.Pop();
                    while (i < data.Length)
                    {
                        decodeMessage(data[i]);
                        i++;
                    }
                }
            }));          
        }
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос