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