vb.net线程未启动
我写了一个小的网络蜘蛛来检查一个内部网站是否正确返回搜索结果(大约每天一次,因为各种原因它不会)。它以串行方式运行find,但需要很长时间,所以我希望将它的一些部分拆分为独立的线程 下面的代码似乎从来没有启动过函数“ripitems”,它会留下一个文件供我以后读入excelvb.net线程未启动,vb.net,multithreading,Vb.net,Multithreading,我写了一个小的网络蜘蛛来检查一个内部网站是否正确返回搜索结果(大约每天一次,因为各种原因它不会)。它以串行方式运行find,但需要很长时间,所以我希望将它的一些部分拆分为独立的线程 下面的代码似乎从来没有启动过函数“ripitems”,它会留下一个文件供我以后读入excel Sub doSearch() Dim myVar As System.Collections.ObjectModel.ReadOnlyCollection(Of IWebElement) Dim csvFile
Sub doSearch()
Dim myVar As System.Collections.ObjectModel.ReadOnlyCollection(Of IWebElement)
Dim csvFile As String, myContinue As Boolean
Dim objWriter As TextWriter
Dim myDriver As New Chrome.ChromeDriver
csvFile = My.Computer.FileSystem.SpecialDirectories.MyDocuments _
& "\Catalogue Download - " & Format(Now(), "yyyymmdd") & ".csv"
objWriter = TextWriter.Synchronized(File.AppendText(csvFile))
For i = 2 To 10
myDriver.Navigate.GoToUrl("mysite/search?QueryExpr=" & searchFor & "&pid=" & i)
myVar = myDriver.FindElementsByClassName("upperContainer")
Dim myThread As New Thread(Sub() ripitems(myVar, objWriter))
myThread.Start()
Next
End Sub
Function ripitems(ByVal elementCollection As System.Collections.ObjectModel.ReadOnlyCollection(Of IWebElement), ByVal fHandle As TextWriter)
[... irrelevant code to find items and prices ...]
For i = 0 To elementCollection.Count - 1
fHandle.Write(thisPN(i) & "," & thisPrice(i))
Next
End Function
我从,
我做错了什么
谢谢此方法不应是
函数
:
Function ripitems(ByVal elementCollection As System.Collections.ObjectModel.ReadOnlyCollection(Of IWebElement), ByVal fHandle As TextWriter)
'[... irrelevant code to find items and prices ...]
For i = 0 To elementCollection.Count - 1
fHandle.Write(thisPN(i) & "," & thisPrice(i))
Next
End Function
将功能
替换为子功能
:
Sub ripitems(ByVal elementCollection As System.Collections.ObjectModel.ReadOnlyCollection(Of IWebElement), ByVal fHandle As TextWriter)
'[... irrelevant code to find items and prices ...]
For i = 0 To elementCollection.Count - 1
fHandle.Write(thisPN(i) & "," & thisPrice(i))
Next
End Sub
运行代码时会发生什么?您是否放置了断点来验证代码是否按其应该的方式执行?整个主子系统运行良好,没有错误,搜索数量也在上升。一步一步地通过,光标进入
myThread.Start()
行,当你点击F11时做了几秒钟的事情,然后继续。。。在debug中,函数代码永远不会运行,如果我在函数中设置了断点,IDE会告诉我当前不会命中该断点。调试器目标代码的任何可执行代码都不与此行关联。我认为函数ripitems
应该是子ripitems
。您实际上并没有返回任何内容(打开选项Strict会显示这一点),所以Sub
应该可以。就这样!如果你加上这个作为回答,我可以接受。谢谢