C# callback делегат изменяет текст, работает большую часть времени

У меня есть слушатель последовательного порта (inputStream), который имеет обратный вызов (DataReceived). Когда я подключаю к нему делегат, который обновляет элемент GUI, он работает нормально, учитывая, что я определил делегат внутри формы GUI, но когда я изменяю размер формы, я получаю сообщение об ошибке, указывающее, что вызов поступает из другого потока, Не уверен, почему это иногда работает.

public partial class Form1: Form { 
  SerialPort inputStream;

  void SomeFunction() {
        inputStream.DataReceived += delegate (object s, SerialDataReceivedEventArgs args) {
            // transfer data from serial port to buffer
            int bytes = inputStream.BytesToRead;
            byte [] data = new byte[bytes];
            inputStream.Read(data, 0, bytes);
            ...
            total_bytes += bytes;
            total_packets++;
            toolStripStatusLabel1.Text = String.Format("{0} Packets {1} Bytes ({2})", total_packets, total_bytes);
        };
    }
  }

Так что это работает нормально, если я не изменю размер окна. Во-первых, я не ожидал, что это сработает, и меня больше смущает, почему изменение размера окна нарушает его. Есть ли какой-нибудь способ, которым я могу добавить вызов, чтобы он работал?

0 ответов

Другие вопросы по тегам