I'm making an App to connect with some biometrics devices using a COM library zkemkeeper.dll. I try to connect the devices without get the screen freezed.
The code i use to connect with the device is this
Imports zkemkeeper
Imports System.Threading
Public Class Form1
Private WithEvents zk As New CZKEM
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckForIllegalCrossThreadCalls = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
zk.Connect_Net("192.168.2.223", 4370)
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
zk.RegEvent(1, 32767)
End Sub
Private Sub zk_OnAttTransactionEx(EnrollNumber As String, IsInValid As Integer, AttState As Integer, VerifyMethod As Integer, Year As Integer, Month As Integer, Day As Integer, Hour As Integer, Minute As Integer, Second As Integer, WorkCode As Integer) Handles zk.OnAttTransactionEx
End Sub
End Class
If i use this code, the screen don't freeze but i loose the connection after the thread dead.
Imports zkemkeeper
Imports System.Threading
Public Class Form1
Private zk As CZKEM
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckForIllegalCrossThreadCalls = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim zk = New CZKEM
zk.Connect_Net("192.168.2.223", 4370)
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
AddHandler zk.OnAttTransactionex, AddressOf zk_OnAttTransactionEx
zk.RegEvent(1, 32767)
End Sub
Private Sub zk_OnAttTransactionEx(EnrollNumber As String, IsInValid As Integer, AttState As Integer, VerifyMethod As Integer, Year As Integer, Month As Integer, Day As Integer, Hour As Integer, Minute As Integer, Second As Integer, WorkCode As Integer)
End Sub
End Class