显示DataReceivedHandler中收到的数据

时间:2016-05-06 01:54:45

标签: c#

一个简单的问题,如何显示收到的文本框?

private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    string indata = sp.ReadExisting();           
    //display here , textBox1.Text=indata (does not work)       
}

1 个答案:

答案 0 :(得分:0)

由于您的问题不包含这些细节,我将不得不对(does not work)部分做出假设。

这是一个例外吗?

  

跨线程操作无效:从创建它的线程以外的线程访问控件。

  

无法在静态上下文中访问非静态字段“textBox1”

UiThreads需要以 STA (单线程公寓)运行,这意味着您无法直接访问文本框,因为textBox1'运行'的线程与{{1}不同}}

要解决该问题,您需要使用DataReceivedHandler,或者更确切地说是'拥有'Dispatcher的线程调度程序。

您还需要确保 if textBox1可以在同一个线程中执行,并且您没有意外地使用对当前正在执行的Dispatcher的Dispatcher调用而陷入僵局。

试试这个:

DataReceivedHandler