一个简单的问题,如何显示收到的文本框?
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
//display here , textBox1.Text=indata (does not work)
}
答案 0 :(得分:0)
由于您的问题不包含这些细节,我将不得不对(does not work)
部分做出假设。
这是一个例外吗?
跨线程操作无效:从创建它的线程以外的线程访问控件。
或
无法在静态上下文中访问非静态字段“textBox1”
UiThreads需要以 STA (单线程公寓)运行,这意味着您无法直接访问文本框,因为textBox1
'运行'的线程与{{1}不同}}
要解决该问题,您需要使用DataReceivedHandler
,或者更确切地说是'拥有'Dispatcher
的线程调度程序。
您还需要确保 if textBox1
可以在同一个线程中执行,并且您没有意外地使用对当前正在执行的Dispatcher的Dispatcher调用而陷入僵局。
试试这个:
DataReceivedHandler