我有一个响应异步的设备,在设备上发生的事件上,它通过串口向主机发送状态。
因为mono没有实现DataReceived事件我创建了一个线程“PollRun”,其中我有:
void PollRun(object param)
{
byte rcvResponse = 0x00;
_serialPort.ReadTimeout = System.IO.Ports.SerialPort.InfiniteTimeout;
while (true)
{
rcvResponse = _serialPort.ReadByte();
// SOME handle code...
}
}
轮询运行正常,直到某些点...轮询运行是应用程序中的一个单独的线程,但是当我在用户的一些不活动时间之后运行此应用程序时会发生什么(例如,在控制台应用程序上没有按键操作在主线程....)它停止工作,就像readByte阻止整个应用程序
也没有ctrl-c信号有帮助......我必须手动杀死进程。
我正在使用ubuntu 11.10和mono 2.10.5
使用无限超时是否存在任何已知问题?你还有什么方法可以做这种阅读,我必须一直等待事件?
谢谢!