我一直以为readtimeout属性是像文档中说的那样,是设置读取超时的,可实际情况并不如此,简单建立以下代码:
serialport1.readtimeout=1000;
serialport1.open();
serialport1.readbyte();
按道理,1秒后,会发生TimeoutException异常,可实际上,程序到这里就阻塞了,如果放在界面线程执行的话,那就假死了,如果这个时候给它喂一个字节,它又活了,这表明程序在那里拼老命等了。
实在不知什么道理,希望哪位给出一个解释:
readtimeout到底有什么用?
serialport1.readtimeout=1000;
serialport1.open();
serialport1.readbyte();
按道理,1秒后,会发生TimeoutException异常,可实际上,程序到这里就阻塞了,如果放在界面线程执行的话,那就假死了,如果这个时候给它喂一个字节,它又活了,这表明程序在那里拼老命等了。
实在不知什么道理,希望哪位给出一个解释:
readtimeout到底有什么用?
解决方案 »
- c#结束excel进程
- c#.NET 生成的程序在别的域机器上运行不了
- SQL2005EXPRESS数据库连接字符串怎么写?
- 两个独立系统之间如何互相调用业务逻辑
- 谁帮我做个程序
- 各位大侠来帮忙,坐标轴的拖动,在线等待!!!
- 关于C#+ASP.NET实现文件上传问题求救
- 我想实现在 DataGrid 控件中 ,用户右击鼠标,电脑就在鼠标的位置弹出一个菜单供用户选择相应的功能!
- datagrid的简单问题,走过的来看看
- 由C#风潮想起的-给初学编程者的忠告
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 800
- 关于sqlserver数据库并发问题
try
{
serialport1.read(....);}
catch
{
}试试。
if(serial.BytesToRead>0) b = serial.ReadByte();
或是用
serial.ReadExisting()
读取到一个缓存,再处理替代ReadLine或ReadTo。
替代都是发生在你的信源(对你程序的发送方)可能会正常情况的缺失\r\n或你指定字符的情况。
的确是这样,一般来说 readbyte 是放在线程中的,因为接收方不知道发送方何时会传输数据所以一直会读取,知道有数据来。