Click here to Skip to main content
15,886,810 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
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
VB
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) 'Screen Freeze at the connection
    End Sub

    Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        zk.RegEvent(1, 32767)'Starts event listener
    End Sub

'runs when someone makes a mark
    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
        'Do Something
    End Sub
End Class

If i use this code, the screen don't freeze but i loose the connection after the thread dead.
VB
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)'Starts event listener
    End Sub

'runs when someone makes a mark
    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)
        'Do Something
    End Sub
End Class
Posted
Comments
Mehdi Gholam 9-Sep-15 11:42am    
Contact the COM API vendor for help.
walterdev 9-Sep-15 14:21pm    
Thanks , I wrote to the vendor and I am waiting for his answer a few days ago.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900