C# Serialport DataReceived线程在执行前结束

C# Serialport DataReceived线程在执行前结束,c#,multithreading,events,serial-port,C#,Multithreading,Events,Serial Port,我注意到,当新线程从serialport Data received事件启动时,如果执行计划仅包括几个方法,这些方法可能会更改某些值并发送到另一个端口,那么它工作正常,但如果该方法需要执行更广泛的处理,如发送到另一个端口并等待确认,再次发送并接收256字节数据包中相当大的数据量(20KB),然后线程就在某个地方停止,永远不会完成。当代码逐步通过时,它似乎工作正常。我读过其他一些人询问这个问题的话题,但是没有“解决方案”,只是使用另一种方法,比如定时器来轮询端口。我甚至做了一个变通方法,让主线程“

我注意到,当新线程从serialport Data received事件启动时,如果执行计划仅包括几个方法,这些方法可能会更改某些值并发送到另一个端口,那么它工作正常,但如果该方法需要执行更广泛的处理,如发送到另一个端口并等待确认,再次发送并接收256字节数据包中相当大的数据量(20KB),然后线程就在某个地方停止,永远不会完成。当代码逐步通过时,它似乎工作正常。我读过其他一些人询问这个问题的话题,但是没有“解决方案”,只是使用另一种方法,比如定时器来轮询端口。我甚至做了一个变通方法,让主线程“poll”一个从事件中更改的变量,而不是让事件执行工作,这似乎是可行的,但是,当使用windows窗体时,我必须创建一个新线程,它似乎在做同样的事情,要么没有完成代码,要么没有执行新线程,这只是一个短暂的外观,永远在检查变量。如果需要,我可以提供代码,只是想了解如何正确解决这个问题。

这里没有人知道问题的答案或解释限制,但是我能够在循环检查变量更改和启动线程时使用计时器来解决问题。

你的文本墙有点混乱。你能不能说一下你想完成什么,一个简单的高级示例,说明你目前正试图完成什么,以及你得到的意外结果是什么?我一直使用C#串行端口,它有一些众所周知的局限性,但大多数情况下都很简单,我运行各种传输100Kbs数据的协议。我想知道接收到的数据线程会有什么限制,以及它们在执行多个其他方法时死亡的原因。我可以给出一个代码示例,但我需要知道您喜欢看什么,因为应用程序相当大。基本上,在接收到某个字节数组后,会调用大约4或5个方法,然后执行诸如发送回ACK、将字节中继到另一个端口、等待ACK、从相机请求图像、将图像移动到另一个端口以及发送该图像的包等操作。当我一步一步走过它的时候,它似乎永远不会完成。