继续获得跨线程错误,无法找出潜在的修复方法 [英] Keep getting cross thread error and cannot figure out a potential fix

查看:53
本文介绍了继续获得跨线程错误,无法找出潜在的修复方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




事件在一个单独的线程中执行,因此我的表单不会被冻结。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆