我在c#,WPF Visual Studio 2012上使用指纹识别软件,我使用secugen仓鼠取指纹,软件全部完成,我可以将指纹正确地注册到数据库并且成功检索并比较它们以供用户访问,但有时当软件将存储的指纹与刚用户的指纹匹配时,方法 MatchIsoTemplate 会生成错误'尝试读取或写保护的内存。这通常表明其他记忆受损了。并且程序停止了,我尝试用try catch捕获它但是它不起作用,无论程序停在那里,这是我根据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
答案 0 :(得分:0)
我回答了我自己的问题,最后我发现了如何做到这一点,我只需要从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); .......