串口编程高手帮忙
在用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#