System.Runtime.InteropServices.COMException: «Исключение из HRESULT: 0xFFFFFFF8» - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь проверить шаблон отпечатка пальца, который хранится в базе данных, но я продолжаю получать эту ошибку в своем проекте, я пытался найти решения в Интернете и преобразовал тип данных в моей базе данных в LONGBLOB, и все же он выиграл 't работа.

После сканирования отпечатка пальца для образца появляется окно с этой ошибкой:

DPFP.Error.SDKException: Обработчик событий сгенерировал исключительную ситуацию ---> Система.InvalidOperationException: Invoke или BeginInvoke не могут быть вызваны для элемента управления, пока не будет создан дескриптор окна.в System.Windows.Forms.Control.MarshaledInvoke (вызывающий элемент управления, метод Delegate, аргументы Object [], логический синхронный) в System.Windows.Forms.Control.Invoke (метод Delegate, аргументы Object []) в System.Windows.Forms.Control.Invoke (метод делегата) в Thesis_MainProgram.CaptureForm.MakeReport (строковое сообщение) в C: \ Users \ libun \ Desktop \ Thesis (GUI + личная информация) \ Thesis take 3 \ Thesis_MainProgram \ CaptureForm.cs: строка 162 в Thesis_MainProgram.CaptureForm.OnFingerGone (Захват объекта, String ReaderSerialNumber) в C: \ Users \ libun \ Desktop \ Thesis (GUI + Личная информация) \ Thesis take 3 \ Thesis_MainProgram \ CaptureForm.cs: строка 100 в DPFP.Capture.Capture.MessageReceived (Сообщение & m) --- Конец внутренней трассировки стека исключений --- в DPFP.Capture.Capture.MessageReceived (Сообщение & m) в DPFP.Capture.Capture.MessageEvents.MessageWindow.WndProc (Сообщение & m)

Это мой код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ClassLibrary1;
using System.IO;
using MySql.Data.MySqlClient;

namespace Thesis_MainProgram
{
    public partial class Verification : CaptureForm
    {
        Connection connect = new Connection();
        byte[] im;
        MySqlConnection conn = new MySqlConnection("datasource=localhost;port=3306;username=root;password=201531748");

        public void Verify(DPFP.Template template)
        {
            Template = template;
            ShowDialog();
        }

        protected override void Init()
        {
            base.Init();
            base.Text = "Fingerprint Verification";
            Verificator = new DPFP.Verification.Verification();     // Create a fingerprint template verificator
            UpdateStatus(0);
        }

        protected override void Process(DPFP.Sample Sample)
        {
            base.Process(Sample);

            // Process the sample and create a feature set for the enrollment purpose.

            DPFP.FeatureSet features = ExtractFeatures(Sample, DPFP.Processing.DataPurpose.Verification);

            // Check quality of the sample and start verification if it's good
            // TODO: move to a separate task
            if (features != null)
            {
                conn.Open();
                MySqlCommand cmd = new MySqlCommand("SELECT Fingerprint FROM payroll_db.employee WHERE ID = 201531777", conn);
                MySqlDataReader dr = cmd.ExecuteReader();

                while ((dr.Read()))
                {
                    im = (byte[])(dr["Fingerprint"]);
                    Stream stream = new MemoryStream(im);
                    DPFP.Template Fingerprint = new DPFP.Template(stream);

                    // Compare the feature set with our template
                    DPFP.Verification.Verification.Result result = new DPFP.Verification.Verification.Result();
                    Verificator.Verify(features, Fingerprint, ref result);
                    UpdateStatus(result.FARAchieved);
                    if (result.Verified)
                        MakeReport("The fingerprint was VERIFIED.");
                    else
                        MakeReport("The fingerprint was NOT VERIFIED.");

                    conn.Close();
                }
            }
        }

        private void UpdateStatus(int FAR)
        {
            // Show "False accept rate" value
            SetStatus(String.Format("False Accept Rate (FAR) = {0}", FAR));
        }

        private DPFP.Template Template;
        private DPFP.Verification.Verification Verificator;

    }
}
...