我有一个程序用于通过 rs232 与硬件通信。该软件用于显示从硬件通过 rs232 尽可能快地推送的数据流。我遇到的问题是,随着时间的推移,分配给程序的私有内存会爆炸,并且会很快使程序崩溃。如果我禁用硬件发送数据大约 2 分钟,那么软件可以清除内存,但前提是我暂停数据流。
我正在使用来自 SerialPort 的 DataReceived 事件,这似乎就是问题所在,因为即使 DataReceived 函数在其中不执行任何操作,它也会导致内存峰值。我唯一能想到的是,每次引发此事件时,它都会创建一个新线程来运行,并且它发生得如此之快,以至于计算机在数据传入时没有时间运行 GC。
是否有更有效的方法从 SerialPort 对象中提取数据?当我收到“NewLine”时我只关心字符串?
谢谢,
约翰·维克斯