System.IO.IOException:由于线程退出或应用程序请求,已放弃I/O操作

双子双星 2018-07-09 09:49:50
运行与客户机的winform程序,今天突然出现这个异常信息,不太清楚是什么原因导致的,串口操作采用的是同步读写,子线程调用设备数据读取方法,在该方法中发送指令,并等待返回数据。搞不清楚是什么导致的这个问题,这个问题是偶尔才出现的。
...全文
1186 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
异步编程时,当宿主迅速销毁时,也就不会去监听什么信息了。一切都是自然而然的。

只有当你想当然地写什么”死循环+阻塞“的代码时,并且随这种代码多于1个,麻烦和冲突就会呈指数级别上升。
  • 打赏
  • 举报
回复
异步编程通常是又精简、又稳定的。不会遇到这类冲突问题,因为有数据来的时候才去读取,根本不会胡乱去主动读取数据。
  • 打赏
  • 举报
回复
比较稳定的方式,是异步编程。

如果你一定要同步、死循环式地编程,那么你应该在每一次操作之前都检测一下整个宿主的状态。例如在窗体的 Closing 事件中设置一个 disposing 标志,然后在你的死循环读取串口时先要检测这个状态,别做无用的读取操作。
正怒月神 2018-07-09
  • 打赏
  • 举报
回复
子线程,是不是异常了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧