C#回调委托修改文本,大部分时间都在工作

时间:2014-03-14 00:41:05

标签: c# user-interface delegates invoke

我有一个串口侦听器(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 个答案:

没有答案