博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中控考勤仪IFace302多线程操作时无法订阅事件
阅读量:6208 次
发布时间:2019-06-21

本文共 1978 字,大约阅读时间需要 6 分钟。

场景:

在各办事点安装中控考勤仪Iface302,各办事点的工作人员上下班报到时使用指纹或面纹进行自动登记,验证成功后将与服务吕进行通讯记录相关的考勤信息。

 

条件限制:

由于Iface302设备不支持自动连接功能,也因此需要在服务器中定时地、主动地去轮询各办事点的连接状况。

 

问题一:

与IFace302通讯主要通过厂家对COM组件封装的dll二次开发,在线程环境的状态下无法订立考勤的事件,验证事件,类似的代码如下:

zkemkeeper.CZKEMClass zkDevice = new zkemkeeper.CZKEMClass();Thread th = new Thread((ThreadStart)delegate() {            _isConnected = zkDevice.Connect_Net(_deviceip, _deviceport);               if (_isConnected == true)            {                //连接成功后才能注册                //如果断开后事件也自然失效                                    if (zkDevice.RegEvent(1, 65535))//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)                {          zkDevice.OnFinger += new zkemkeeper._IZKEMEvents_OnFingerEventHandler(zkDevice_OnFinger);      } }); th.IsBackground = true; th.Start();

 此代码是可以正常运行但无法注册事件,而如果不使用线程每次调用COM组件的方法都是有一段时间的阻塞。

 

问题二:

经了解,博客园有人提出在线程中增加 Application.Run();代码可以解决无法订阅事件的问题,即:

zkemkeeper.CZKEMClass zkDevice = new zkemkeeper.CZKEMClass();Thread th = new Thread((ThreadStart)delegate() {            _isConnected = zkDevice.Connect_Net(_deviceip, _deviceport);               if (_isConnected == true)            {                //连接成功后才能注册                //如果断开后事件也自然失效                                    if (zkDevice.RegEvent(1, 65535))//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)                {          zkDevice.OnFinger += new zkemkeeper._IZKEMEvents_OnFingerEventHandler(zkDevice_OnFinger);      }            Application.Run();  //新加代码,后是可以正常订阅事件 }); th.IsBackground = true; th.Start();

 在代码最后加上Application.Run()的确是可以解决无法订阅事件的问题,但当程序运行一段时间后就会出现System.OutOfMemoryException: 引发类型为“System.OutOfMemoryException”的异常。

由于是几个小时才出现的内存溢出异常,通过观察任务管理器可以发现以下问题:

在多线程中使用Application.Run()方法会导致到内存使用、虚拟内存大小、页面缓冲池、线程数是不断地增加

最终导致System.OutOfMemoryException”的异常。

 

嘀咕几句:

在这里再次吐槽一下中控科技的售后服务极差,反复打了N次电话均无法连通,在官网留言亦无任何反馈。

 

寻求帮助:

各同行该问题如何解决呢?

 

转载地址:http://kszja.baihongyu.com/

你可能感兴趣的文章
SDN交换机在云计算网络中的应用场景
查看>>
革新以太网交换机架构 全光网络的风刮进园区
查看>>
物联网商机迸发 LPWAN芯片现身 本文转自d1net(转载)
查看>>
【eclipse转idea的第一天】配置idea
查看>>
error: Refusing toundefine while domain managed save image exists
查看>>
wordpress在新窗口打开留言者链接
查看>>
java开发过程中的命名规范
查看>>
mysql索引随记
查看>>
关于Pac-Man,你所要了解的 一切
查看>>
分布式配置管理平台Disconf
查看>>
pdf 字体和图片抽取
查看>>
Cisco Nexus 1000V
查看>>
我的友情链接
查看>>
[iOS Animation]-CALayer 性能优化实例
查看>>
CentOS多网卡重命名配置
查看>>
变态青蛙跳
查看>>
Git常用命令总结
查看>>
定时任务
查看>>
MyBatis之输入与输出(resultType、resultMap)映射
查看>>
剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?
查看>>