Последовательный порт чтения + темы или что-то лучше?
Я не знаю, является ли это хорошим способом работы со стеком для этой задачи, но я уверен, что есть более быстрый способ ... Я получаю данные из своего микроконтроллера, но длина данных не всегда одинаковой длины. Я подумал, может быть, я могу поместить данные в свой стек и в потоке я могу вытолкнуть их и декодировать сообщение. Я не хотел замедлять 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);
}
}
Спасибо