※※※※关于多线程的问题~~~急~~~~※※※※
我使用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
'启动线程
th7.Start()
End If
Case 206462812
If RCard6 Is Nothing Then
'实例一个类
RCard6 = New ReaderSix
'创建一个线程
Dim th6 As New Thread(New ThreadStart(AddressOf RCard6.ReadCard6))
th6.Name = "ReadCardSix "
'传递参数给线程
RCard6.iReaderHnd = iReaderHnd(i)
RCard6.DeviceID = DeviceID(i)
RCard6.Thread = th6
'判断线程是否活动的
'启动线程
th6.Start()
End If
End Select
Next
End Sub
现在的问题是:
如果我只有一台读卡器,其中任意一台,在没有更改代码的情况下程序运行都是正常的,但如果我两台读卡器,同时读卡时,而在FORM上两个LABLE.TEXT的值会不断的发生变化,很不稳定。请高手们帮帮忙看看,是什么问题导致的,小弟万分感谢!本人的MSN:zjx1302@hotmail.com QQ:123175406
如果有时间可以加本人QQ帮忙解决,谢谢!
[解决办法]
用两个Label。
[解决办法]
是不是数据源的问题?或者是同步问题,你异步化操作试试。轮询(IAsyncResult.IsCompleted)操作状态
[解决办法]
怎么个跳动法?是位置发生跳动,还是数字变动,还是显示出现闪烁?
[解决办法]
问你一些问题...你这两个读卡器是不是独立的.两线程这间有没有数据交流.两线程是不是完全独立的?
如果是...为何不单独使用两线程轮询