当前位置:编程学习 > C#/ASP.NET >>

关于serialport之bug:

关于serialport之bug:
现在新的电脑很少自带串口,绝大多都用USB转串口,非常方便,我用C#的serialport类
做通信的处理,不过很快发现作微软的产品,此类有存在重大bug的嫌疑(是否微软好的东西都是买来的呢?)
过程很简单:
1。定义串口对象并打开:SerialPort serialPort1 = new SerialPort();
                       serialPort1.Open();
2。拔掉串口设备(USB转串口线)问题即出现:我的应用软件无易做图常退出,退出时会抛出无法try-catch掉的
   UnauthorizedAccessException 异常                      

无法catch是因为它在 Application.Run(...)之后的Main(){...}结束之后发生
也就是在本进程最后Exit之时,回收站GC的工人阿姨多少有点好奇地跑到进程原来所占
的领地看看一切是否收拾妥当(特别是非托管的资源,照理不关GC的事),结果发现串口
的灯还亮着,“噫?!,人都走了还不关灯,哎!现在的年轻人啊”,于是跑过去想把它关了,
但意外的是居然关不了,“怪了,什么东东啊,不能关,还没权力?我可是中央派来的哦,切!...”

有个办法是用GC.SuppressFinalize告诉回收站不要去管这闲事,但没用,可能真不是GC检查到的

你可能会说,退出之前调用对象的CLose(),Dispose()啊,有用的话也不会有这疑问了,各位是否碰到,怎么处理的呢? --------------------编程问答-------------------- 出现这个问题应该是USB转串口驱动的问题,你拔掉的是usb接口吧。你可以看看拔掉com口试试。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,