1

我在我的应用程序中使用多线程概念。我使用下面的代码

 Dim threadHistory As Thread = Nothing
                For Each dRow As DataRow In sqlDS.Tables(0).Rows
                    GetPropertyBidHistory(dRow("ID"))
                    threadHistory = New Threading.Thread(AddressOf GetRowHistory)
                    threadHistory.Name = "Row" + dRow("ID")    
                    threadHistory.Start(dRow("ID"))                       
                    threadHistory.Join()
                Next

    Public Sub GetRowHistory(ByVal ID As String)
            '1 min code from web srvice
    End Sub

如果我有 10 个 ID,我怎么知道所有 10 个线程是否都已完成。

4

1 回答 1

0

您一个接一个地开始并加入线程。那也许不是你的意图。如果您保持这种方式创建单个线程,请等待它完成,然后才能继续下一个元素。

我会尝试以下操作:对于每个线程,将其添加到列表或数组中,然后在 For Each/Next 语句之后您可以使用属性将它们全部加入,我猜,JoinAll()

Dim List( Of Thread) allThreads  = new List
Dim threadHistory As Thread = Nothing

                For Each dRow As DataRow In sqlDS.Tables(0).Rows
                    GetPropertyBidHistory(dRow("ID"))
                    threadHistory = New Threading.Thread(AddressOf GetRowHistory)
                    threadHistory.Name = "Row" + dRow("ID")    
                    allThreads.Add(threadHistory)
                    threadHistory.Start(dRow("ID"))                       

                Next
Thread.JoinAll(allThreads) 'Blocks until all the threads finish
于 2013-07-29T15:38:37.613 回答