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

串口编程高手帮忙

在用serialPort类做串号操作时,打开端口后,拔掉数据线,再接上,
在关闭时后回收内存时出现
在 System.IO.Ports.InternalResources.WinIOError()
   在 System.IO.Ports.SerialStream.Dispose(Boolean disposing)
   在 System.IO.Ports.SerialStream.Finalize()</StackTrace><ExceptionString>System.UnauthorizedAccessException: 对端口的访问被拒绝。
   在 System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
   在 System.IO.Ports.InternalResources.WinIOError()
   在 System.IO.Ports.SerialStream.Dispose(Boolean disposing)


   在 System.IO.Ports.SerialStream.Finalize()</ExceptionString
看网上有人说是微软serialPort类的一个BUG,
哪位高手能否给于帮助呀,非常感谢! --------------------编程问答-------------------- Catch一下,然后吃掉 --------------------编程问答-------------------- 首先

 拔掉串口通信线,不是程序能够程序能够解决的问题!

 像端口这种资源使用完应该立即释放的,每次Open完及时Close;


能够做的就是在端口打开和关闭时做好异常处理,在Application.Run上加try catch捕获异常!

没什么好办法。

关于.NET 类库自带SerialPort类的不足,这里有说明及示例代码(英文)

Performance of System.IO.Ports versus Unmanaged Serial Port Code --------------------编程问答-------------------- 谢谢楼上的两位,用了很多办法还是不行 --------------------编程问答--------------------
因为这个问题是在GC线程中处理的Finalize函数抛出的一场,所以你无法在自己的线程中进行try/catch, 只能通过Application.ThreadException -- 如果是service程序,我想通过配置重启服务解决更好。 

这个问题是微软的bug,微软给出了一个很shit的workaround,说在下一个版本的.NET上才能彻底解决

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=140018 

--------------------编程问答-------------------- 关注中。。。 --------------------编程问答-------------------- 郁闷,我也遇到这样的问题了,研究一天了还没解决,今天还得继续………………啊啊啊 --------------------编程问答-------------------- 不是bug。你是笔记本电脑?拔掉的是pc串口卡吧?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,