【发布时间】:2011-07-11 19:28:30
【问题描述】:
我的应用程序每隔 x 毫秒从串行端口(MyDataReader)读取一些数据并将其显示在控件上,MyDataReader 也可以是一个文件,我可以从中读取数据。
我使用了一个简单的计时器,每一次我都从串口/文件中读取数据,处理并显示它,效果很好。
现在我添加了另一个我需要从中读取数据的设备,我已经切换到 System.Threading.Timer,但是现在我的“tick”功能无法正常工作,当它从串口读取时,我得到零。当我进入调试模式和断点 ReadFromSerialPort() 函数时,有时我得到有效数据,有时我没有。
如果我从串行端口读取切换到从文件读取,它工作正常,我已经调用了所有显示数据的控件。
我锁定了串口的读/写:
lock(this)
{
writetoserialport;
readfromserialport;
}
任何人都知道为什么我总是得到零,并且当我断点时我有时会有数据? 就像它在不同的线程上打开从串行端口的读取一样,我需要等待要读取的数据。
谢谢。
【问题讨论】:
-
你能提供更多代码吗?
-
为什么不在串行端口上进行异步读取,而不是轮询。
标签: c# .net multithreading timer serial-port