




























文章背景:收到几好位博友、微信公众号读者在询问中控iface302开发的问题,如“尝试读取或写入受保护的内存”。
周日刚好在家,把以前的移动硬盘找了个遍,也找到以前开发中控Iface302的一些案例,由于年份比较较,不能保证一定可以解决问题,但这可能也是一种思路,具体需要根据问题去调度搜索。
大致的开发背景为:
零星几张中控考勤机二开效果图:



通过ReleaseComOjbect释放对象可能会导致对象占用的内存问题导致出错,这里做了优化,即设置对象为空,并执行垃圾回收。
/// <summary>
/// 连接设备
/// </summary>
public void ConnectAsyn()
{
if (isConnectting == true)
{
OnShowMessage("正在连接...请稍后...");
return;
}
try
{
ThreadJob = new Thread(new ThreadStart(Connect));
ThreadJob.IsBackground = true;
ThreadJob.Start();
}
catch (Exception ex)
{
Utils.WriteLog(ex.ToString(), "ConnectAsyn"); try
{
//Marshal.ReleaseComObject(zkDevice); //否则多次调用时会出现 示尝试读取或写入受保护的内存 这通常指示其它内存已损坏
GC.Collect();
zkDevice = null;
GC.Collect();
}
catch (Exception ex2)
{
Utils.WriteLog(ex2.ToString(), "zkDevice=null");
}
}
}
更多信息可以浏览微信公众号:https://mp.weixin.qq.com/s/DJg9WOSkafFIiz7Fy74jjw
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。