继续获得跨线程错误,无法找出潜在的修复方法 [英] Keep getting cross thread error and cannot figure out a potential fix
本文介绍了继续获得跨线程错误,无法找出潜在的修复方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
事件在一个单独的线程中执行,因此我的表单不会被冻结。
event execute in a separate thread so my form is not frozen.
谢谢你。
推荐答案
请阅读 SerialPort类。
SerialPort已在单独的线程上处理通信。不需要额外的后台工作人员。
The communication is already handled on a separate thread by SerialPort. No need for an extra background worker.
只需使用
DataRecieved 事件的SerialPort。这里将数据读入缓冲区并评估此缓冲区。但它在很大程度上取决于您的设备使用的协议类型。例如。类似
Just use the DataRecieved event of SerialPort. Here read the data into a buffer and evaluate this buffer. But it depends strongly on the kind of protocol used by your device. E.g. something like
private SerialPort serialPort;
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.buffer += this.serialPort.ReadExisting();
string datagram = this.DequeueDatagram();
while (datagram != null) {
this.HandleDatagram(datagram);
datagram = this.DequeueDatagram();
}
}
private string DequeueDatagram()
{
string result = null;
bool containsDatagram = someLogicTest;
if (containsDatagram)
{
result = retrieveDatagramFromBuffer;
this.buffer = removeDatagramFromBuffer;
}
return result;
}
private void HandleDatagram(string datagram)
{
//Do something
}
这篇关于继续获得跨线程错误,无法找出潜在的修复方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文