文档章节

C# 串口 已关闭 Safe handle

o
 osc_z1hvg4cu
发布于 2018/04/24 14:58
字数 236
阅读 23
收藏 0

精选30+云产品,助力企业轻松上云!>>>

今天在使用我的通信框架,创建基于串口通信的客户端时,出现这样一个BUG:

 

[csharp]  view plain  copy
 
  1. 未处理 System.ObjectDisposedException  
  2.   Message=已关闭 Safe handle  
  3.   Source=mscorlib  
  4.   ObjectName=""  
  5.   StackTrace:  
  6.        在 System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)  
  7.        在 System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success)  
  8.        在 Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(SafeFileHandle hFile, NativeOverlapped* lpOverlapped, Int32& lpNumberOfBytesTransferred, Boolean bWait)  
  9.        在 System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent()  
  10.        在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)  
  11.        在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)  
  12.        在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)  
  13.        在 System.Threading.ThreadHelper.ThreadStart()  
  14.   InnerException:   


当这个BUG出现时,程序直接崩溃,无法跟踪到错误代码位置。

 

经过一番测试,查找问题。发现在一个函数内利用SerialPort创建了串口通信实例后,没有将该实例放入任何其他容器中进行缓存,从而导致了上述崩溃BUG的产生。

后来修改代码,将该实例放入了一个全局变量List<通信客户端>集合中,该BUG得以解决。

 

原文地址:https://blog.csdn.net/yeqi3000/article/details/41983517

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
c# SerialPort会出现“已关闭 Safe handle”的错误

c# SerialPort使用时出现“已关闭 Safe handle”的错误 我在开发SerialPort程序时出现了一个问题,在一段特殊的扫描代码的时候会出现“已关闭 Safe handle”的错误,很疑惑。我是通过线程对串...

osc_bhmyqusc
2018/07/30
3
0
模拟实现向串口写数据

//#include <stdio.h> #include <Windows.h> int main() { //1.打开指定端口 HANDLE hComm = CreateFile("COM1", //串口名称 GENERICREAD|GENERICWRITE, //串口属性:可读写 0, //串口设备必......

赵者也
2012/08/15
111
0
串口调试助手--SerialHelper

SerialHelper 基于C#的串口调试助手,支持十六进制,附加校验,lua脚本,shell通信等功能 1、软件是基于c#编写 2、软件使用unilua来支持lua脚本 3、串口自动检测,点击串口选择组合框,在下拉...

Big Snail
2016/04/15
2.9K
0
【Arduino】使用C#实现Arduino与电脑进行串行通讯

在给Arduino编程的时候,因为没有调试工具,经常要通过使用串口通讯的方式调用Serial.print和Serial.println输出Arduino运行过程中的相关信息,然后在电脑上用Arduino IDE的Serial Monitor来...

osc_flp5mhtj
2018/03/25
15
0
WIN32串口编程

一、基本知识    Win32下串口通信与16位串口通信有很大的区别。在Win32下,可以使用两种编程方式实现串口通信,其一是调用的Windows的API函数,其二是使用ActiveX控件。使用API 调用,可以...

XTechFly
2016/03/17
24
0

没有更多内容

加载失败,请刷新页面

加载更多

聚焦餐饮行业,研究院昨发布数据显示

谈话,聚焦餐饮行业,研究院昨发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元.随着餐饮行业的快速发展,"如何留人"也成为餐饮企业的思考题. 记者了解到,中国饭店协会...

点击fojewio
48分钟前
20
0
3·15晚会曝光上海氪信、招财旺旺SDK包泄露隐私 后台上传交易验证码敏感信息

来源 | 央视 7月16日,央视3·15晚会曝光国美易卡、美的空调遥控器、姨妈日历、银码头等50多款软件中内嵌的SDK包读取、上传用户隐私问题。上海氪信信息技术有限公司、北京招财旺旺信息技术有...

镭射财经
57分钟前
14
0
名称=''的无效表单控件不可聚焦 - An invalid form control with name='' is not focusable

问题: I have an acute problem on my website. 我的网站上有一个严重的问题。 In Google Chrome some customers are not able to proceed to my payment page. 在Google Chrome浏览器中,某......

技术盛宴
58分钟前
14
0
Hacker News 简讯 2020-07-17

更新时间: 2020-07-17 01:01 Let’s avoid talk of ‘chemical imbalance’: it’s people in distress - (psyche.co) 让我们避免谈论“化学失衡”:这是处于困境中的人们 得分:260 | 评论:...

FalconChen
今天
92
0
【LeetCode】 59 在排序数组中查找元素的第一个和最后一个位置

题目: 解题思路: 二分法 https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/zai-pai-xu-shu-zu-zhong-cha-zhao-yuan-su-de-di-yi-/ 代......

JaneRoad
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部