2016-12-12 8 views
0

Я использую стороннюю dll для интеграции биометрического устройства zteco. Я добавляю zkemkeeper.dll с помощью TlbImp.exe и копируя его.Необработанное исключение типа «Исключение System.TypeInitializationException» произошло в RTEvents.exe

Here is my connection class

Вот мой основной код

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.Threading; 

namespace RTEvents 
{ 
    public partial class Main : Form 
    { 
     public Main() 
     { 
      InitializeComponent(); 
     } 


     private void connectionToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      Connectivity con = new Connectivity(); 
      con.MdiParent = this; 
      con.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
      con.ControlBox = false; 
      con.MaximizeBox = false; 
      con.MinimizeBox = false; 

      con.Text = ""; 
      con.Dock = DockStyle.Fill; 
      con.Show(); 
     } 

     private void Main_Load(object sender, EventArgs e) 
     { 
      try 
      { 
       IsMdiContainer = true; 
       WindowState = FormWindowState.Normal; 
       this.toolStripStatusLabel1.Text = "Checking device status..."; 

       new Thread(() => 
       { 
        Thread.CurrentThread.IsBackground = true; 
        Connection con = new Connection(); 
        RealTimeEvents rt = new RealTimeEvents(); 
        if (con.CheckConnectivity(Connection.axCZKEM1)) 
        { 
         this.toolStripStatusLabel1.Text = "Device connected"; 

         con.DeviceProcess(rt); 
        } 
        else 
        { 
         this.toolStripStatusLabel1.Text = "Device not connected"; 
        } 
       }).Start(); 

      } 
      catch { } 
     } 

     public void setStatusLabel(string text) 
     { 
      this.toolStripStatusLabel1.Text = text; 
     } 


    } 
} 

мой класс соединения

using System; 

использованием System.Collections.Generic; с использованием System.Text;

пространства имен RTEvents { класс Connection { общественности статической строки IP = "192.168.1.3"; публичная статическая строка PORT = "4370"; публичная статическая строка MACHINE_NUMBER = "1"; Публичная статическая строка MASK = "65535"; public static zkemkeeper.CZKEMClass axCZKEM1 = новый zkemkeeper.CZKEMClass(); public static bool isConnected = false; общественного недействительными DeviceProcess (RealTimeEvents к.т.) {

 if (Connection.axCZKEM1.RegEvent(Convert.ToInt32(MACHINE_NUMBER), Convert.ToInt32(MASK)))//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all) 
     { 
      Connection.axCZKEM1.OnFinger += new zkemkeeper._IZKEMEvents_OnFingerEventHandler(rt.axCZKEM1_OnFinger); 
      Connection.axCZKEM1.OnVerify += new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(rt.axCZKEM1_OnVerify); 
      Connection.axCZKEM1.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(rt.axCZKEM1_OnAttTransactionEx); 
      Connection.axCZKEM1.OnFingerFeature += new zkemkeeper._IZKEMEvents_OnFingerFeatureEventHandler(rt.axCZKEM1_OnFingerFeature); 
      Connection.axCZKEM1.OnEnrollFingerEx += new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(rt.axCZKEM1_OnEnrollFingerEx); 
      Connection.axCZKEM1.OnDeleteTemplate += new zkemkeeper._IZKEMEvents_OnDeleteTemplateEventHandler(rt.axCZKEM1_OnDeleteTemplate); 
      Connection.axCZKEM1.OnNewUser += new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(rt.axCZKEM1_OnNewUser); 
      Connection.axCZKEM1.OnHIDNum += new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(rt.axCZKEM1_OnHIDNum); 
      Connection.axCZKEM1.OnAlarm += new zkemkeeper._IZKEMEvents_OnAlarmEventHandler(rt.axCZKEM1_OnAlarm); 
      Connection.axCZKEM1.OnDoor += new zkemkeeper._IZKEMEvents_OnDoorEventHandler(rt.axCZKEM1_OnDoor); 
      Connection.axCZKEM1.OnWriteCard += new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(rt.axCZKEM1_OnWriteCard); 
      Connection.axCZKEM1.OnEmptyCard += new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(rt.axCZKEM1_OnEmptyCard); 
      Connection.isConnected = true; 
     } 
    } 
    public void UnProcessDevice(RealTimeEvents rt) 
    { 
     Connection.axCZKEM1.Disconnect(); 
     Connection.axCZKEM1.OnFinger -= new zkemkeeper._IZKEMEvents_OnFingerEventHandler(rt.axCZKEM1_OnFinger); 
     Connection.axCZKEM1.OnVerify -= new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(rt.axCZKEM1_OnVerify); 
     Connection.axCZKEM1.OnAttTransactionEx -= new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(rt.axCZKEM1_OnAttTransactionEx); 
     Connection.axCZKEM1.OnFingerFeature -= new zkemkeeper._IZKEMEvents_OnFingerFeatureEventHandler(rt.axCZKEM1_OnFingerFeature); 
     Connection.axCZKEM1.OnEnrollFingerEx -= new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(rt.axCZKEM1_OnEnrollFingerEx); 
     Connection.axCZKEM1.OnDeleteTemplate -= new zkemkeeper._IZKEMEvents_OnDeleteTemplateEventHandler(rt.axCZKEM1_OnDeleteTemplate); 
     Connection.axCZKEM1.OnNewUser -= new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(rt.axCZKEM1_OnNewUser); 
     Connection.axCZKEM1.OnHIDNum -= new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(rt.axCZKEM1_OnHIDNum); 
     Connection.axCZKEM1.OnAlarm -= new zkemkeeper._IZKEMEvents_OnAlarmEventHandler(rt.axCZKEM1_OnAlarm); 
     Connection.axCZKEM1.OnDoor -= new zkemkeeper._IZKEMEvents_OnDoorEventHandler(rt.axCZKEM1_OnDoor); 
     Connection.axCZKEM1.OnWriteCard -= new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(rt.axCZKEM1_OnWriteCard); 
     Connection.axCZKEM1.OnEmptyCard -= new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(rt.axCZKEM1_OnEmptyCard); 
     Connection.isConnected = false; 
    } 
    public bool CheckConnectivity(zkemkeeper.CZKEMClass axCZKEM1) 
    { 
     if (isConnected == false) 
     { 

      if (axCZKEM1.Connect_Net(IP, Convert.ToInt32(PORT))) 
      { 

       isConnected = true; 
       return isConnected; 
      } 
      else 
      { 
       return false; 
      } 
     } 
     return false; 
    } 
} 

}

это ошибка, и Я понятия не как ее решить Thats the error

ответ

0

Этот тип исключения не генерируется, когда класс , не может назначить определенное статическое свойство.

См. Документацию в MDSN;

https://msdn.microsoft.com/en-us/library/system.typeinitializationexception(v=vs.110).aspx#Static

В классе у вас есть;

public static zkemkeeper.CZKEMClass ... = new zkemkeeper.CZKEMClass(); 

Попробуйте удалить это (для целей отладки) и посмотреть, все еще ли выбрано ваше исключение. Если это не так, тогда вы знаете, что это проблема. Что касается основной проблемы, почему, нам понадобится дополнительная информация об этой dll zkemkeeper.

+0

https://drive.google.com/open?id=0B15rs9I9HpmsMV9kMnRCLWJQc2c это DLL для 32 битных окон 7 http://www.zkteco.com/support/SDK/39_55.html (Stand Alone SDK) u может получить оттуда dll отсюда. –

+0

Я взглянул на эту .dll, и с помощью dotpeek можно увидеть, что это класс взаимодействия COM с директивой 00853A19-BD51-419B-9269-2DABE57EB61F. Конструктор класса использует атрибуты MethodImpl (InternalClass и MethodCodeType.Type.Runtime.Я попытаюсь включить эту DLL и попробовать. –

+0

О, спасибо, я буду ждать вашего ответа. –

 Смежные вопросы

  • Нет связанных вопросов^_^