多線程學習筆記

如今手上有一些歷史的VB項目,是工控方面PLC控制的. 代碼用了不少DoEvent 和時間等待. DoEvent的最大問題的不知道流程跳到哪裏去了.多線程

        
        MSComm1.InBufferCount = 0
        MSComm1.Output = nSendTemp
        DoEvents
         
        Start = timeGetTime
                
        Do While timeGetTime - Start < 500
        '在毫秒內連續讀PLC
        '16是返回位的長度,要等它返回完以後,才能繼續下一步
                If MSComm1.InBufferCount >= 16 Then 
                
                        Dim readTemp() As Byte
                        readTemp = MSComm1.Input
                        Dim nTemp(20) As Long
                        If DispatchPlcData_Wr(readTemp, nTemp, 2) = False Then
                        '讀PLC錯
                                nData(0) = 0
                                nData(1) = 0
                                GoTo EndFunc
                        Else
                                nData(0) = nTemp(0)
                                nData(1) = nTemp(1)
                                GetAddressData = True                               
                                Exit Function
                        End If
                End If
                DoEvents
        Loop  

 

因此,不得以要用C#從新改造,從新撿起多線程.以前寫WinForm比較少,從新學習一遍多線程.異步

1. IO密集型的,儘可能不要用多線程,而是用異步方法.由於IO比CPU慢太多了.CPU只須要偶爾發個指令過去,而後在異步方法完成時處理一下就行了.oop

相關文章
相關標籤/搜索