我正在使用第三方dll來集成zteco生物識別設備。我已經使用TlbImp.exe添加zkemkeeper.dll並複製它。在RTEvents.exe中發生未處理的異常類型'System.TypeInitializationException'
這裏是我的主要代碼
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;
}
}
}
我的連接類使用System.Collections.Generic
using System;
; using System.Text;
命名空間RTEvents { 類連接 { 公共靜態字符串IP = 「192.168.1.3」; public static string PORT =「4370」; public static string MACHINE_NUMBER =「1」; public static string MASK =「65535」; public static zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass(); public static bool isConnected = false; 公共無效DeviceProcess(RealTimeEvents RT) {
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
https://drive.google.com/open?id=0B15rs9I9HpmsMV9kMnRCLWJQc2c這是DLL是32位Windows 7 http://www.zkteco.com/support/SDK/39_55.html(獨立式SDK ) 你可以從這裏得到其餘的DLL。 –
我看了一下這個.dll文件,並且使用dotpeek可以看到這是一個COM互操作類,引導了00853A19-BD51-419B-9269-2DABE57EB61F。該類的構造函數使用MethodImpl(InternalClass和MethodCodeType.Type.Runtime屬性,我將嘗試包括此dll並嘗試使用它 –
噢,謝謝我會等待您的回覆 –