※※※※关于多线程的有关问题~※※※※
※※※※关于多线程的问题~~~急~~~~※※※※
我使用timer控件每隔300MS就去判断读卡线程是否执行完成,如果执行完成则再次创建线程,就这样一直循环的去读卡,
现我的PC上有连接两台读卡器,我的实现方式是:使用一个线程来控制一台读卡器,所以这样会有两个线程来控制两台读卡器.
程序中,我使用ReaderSeven类与ReaderSix类去读两台读卡器上的卡,在类中利事件驱动的方式,把结果放在Form中的两个Lable上显示出来,而是Form中去创建两个线程,其代码如下(DecSnr为值为2,表示为两台读卡器;DeviceID(i):值为读卡器的ID,线程根据DeviceID来控制一台读卡器,这样不会乱):
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim i As Integer
For i = 0 To DecSnr - 1
Select Case DeviceID(i)
Case 206464490
'判断一个线程是否已经执行完成
If RCard7 Is Nothing Then
'实例一个类
RCard7 = New ReaderSeven
'创建一个线程
Dim th7 As New Thread(New ThreadStart(AddressOf RCard7.ReadCard7))
th7.Name = "ReadCardSeven "
'传递参数给线程
'RCard7.index = i
RCard7.DeviceID = DeviceID(i)
RCard7.iReaderHnd = iReaderHnd(i)
RCard7.Thread = th7
'启动线程
我使用timer控件每隔300MS就去判断读卡线程是否执行完成,如果执行完成则再次创建线程,就这样一直循环的去读卡,
现我的PC上有连接两台读卡器,我的实现方式是:使用一个线程来控制一台读卡器,所以这样会有两个线程来控制两台读卡器.
程序中,我使用ReaderSeven类与ReaderSix类去读两台读卡器上的卡,在类中利事件驱动的方式,把结果放在Form中的两个Lable上显示出来,而是Form中去创建两个线程,其代码如下(DecSnr为值为2,表示为两台读卡器;DeviceID(i):值为读卡器的ID,线程根据DeviceID来控制一台读卡器,这样不会乱):
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim i As Integer
For i = 0 To DecSnr - 1
Select Case DeviceID(i)
Case 206464490
'判断一个线程是否已经执行完成
If RCard7 Is Nothing Then
'实例一个类
RCard7 = New ReaderSeven
'创建一个线程
Dim th7 As New Thread(New ThreadStart(AddressOf RCard7.ReadCard7))
th7.Name = "ReadCardSeven "
'传递参数给线程
'RCard7.index = i
RCard7.DeviceID = DeviceID(i)
RCard7.iReaderHnd = iReaderHnd(i)
RCard7.Thread = th7
'启动线程