Try Catch Block 不适用于 Secugen Fingerprint

本文关键字:Secugen Fingerprint 适用于 不适用 Catch Block Try | 更新日期: 2023-09-27 17:56:29

我正在开发 c# 上的指纹识别软件,WPF Visual Studio 2012,我正在使用 secugen 仓鼠来采集指纹,软件全部完成,我可以将指纹正确注册到数据库并成功检索和比较它们以供用户访问,但有时当软件将存储的指纹与刚刚拍摄的用户指纹相匹配时, 方法MatchIsoTemplate生成错误"尝试读取或写入受保护的内存。这通常表明其他内存损坏并且程序停止,我试图通过尝试捕获来捕获它,但它不起作用,无论程序停在那里什么,这是我根据secugen sdk示例使用的代码

SGFPMISOTemplateInfo sample_info = new SGFPMISOTemplateInfo();
                            Int32 err = m_FPM.GetIsoTemplateInfo(customer.Huella, sample_info);
                            bool matched = false;
                            for (int i = 0; i < sample_info.TotalSamples; i++)
                            {
                                try
                                {
                                    m_FPM.MatchIsoTemplate(customer.Huella, i, m_VrfMin, 0, m_SecurityLevel, ref matched);
                                }
                                catch (Exception)
                                {
                                    MessageBox.Show("Try Again", "Aviso", MessageBoxButton.OK, MessageBoxImage.Hand);
                                }

                                if (matched)
                                {
                                    //fill data

Try Catch Block 不适用于 Secugen Fingerprint

我回答了我自己的问题,最后我发现了如何做到这一点,我只需要将该方法包装在 System.Runtime.ExceptionServices 中的 [HandleProcessCorruptedStateExceptions] 周围,并在方法的正确部分使用 Try Catch,如下所示

[HandleProcessCorruptedStateExceptions]
        void myFunction()
        {
try
{
    switch (sequence)
    {
        case 0:
            sequence++;
            m_FPMAux.MatchIsoTemplate(customer.Huella, i, m_VrfMin, 0, m_SecurityLevel, ref matched);
            break;
            case 1:
            sequence++;
            m_FPMAux.MatchIsoTemplate(m_VrfMin, 0, customer.Huella, i, m_SecurityLevel, ref matched);  .......