나는 URL 파일에서 읽고 각각을 크롤링하는 더 많은 스레드를 만드는 꽤 긴 작업을 실행하고 실행할 백그라운드 작업자를 만들었습니다. 나는 그것을 디버깅을 통해 시도해 보았고 아무런 이유없이 백그라운드 프로세스가 조기에 끝나는 것을 발견했다. 이 문제를 일으키는 내 코드의 논리에 문제가 있습니까? 나는 의미를 갖기 위해 가능한 한 많이 시도하고 붙여 넣을 것입니다.배경 작업자가 올바르게 작동하지 않음
While Not myreader.EndOfData
Try
currentRow = myreader.ReadFields()
Dim currentField As String
For Each currentField In currentRow
itemCount = itemCount + 1
searchItem = currentField
generateSearchFromFile(currentField)
processQuerySearch()
Next
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
Console.WriteLine(ex.Message.ToString)
End Try
End While
코드의 첫 번째 비트는 파일에서 입력 루프이며,이 배경 노동자가하는 일입니다. 다음 코드는 백그라운드 작업자가 모든 'landingPages'를 처리 할 스레드를 만드는 위치입니다. 약 10 개의 스레드가 생성 된 후 백그라운드 작업자는이 하위를 종료하고 파일 입력 루프를 건너 뛰고 프로그램을 종료합니다. 다음과 같이 나는 배경 스레드를 만들 수
Try
For Each landingPage As String In landingPages
pgbar.Timer1.Stop()
If VisitedPages.Contains(landingPage) Then
Continue For
Else
Dim thread = New Thread(AddressOf processQuery)
count = count + 1
thread.Name = "Worm" & count
thread.Start(landingPage)
If numThread >= 10 Then
For Each thread In ThreadList
thread.Join()
Next
numThread = 0
Continue For
Else
numThread = numThread + 1
SyncLock ThreadList
ThreadList.Add(thread)
End SyncLock
End If
End If
Next
내 주요 프로그램은 다음과 같습니다
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
isClicked = True
ProgressBar1.Value = 10
Me.BackgroundWorker1.RunWorkerAsync()
Timer1.Interval = 10000
....
배경은 할 일 함수가 표시되지 않습니다하지만 기본적으로 다른 클래스에서이 함수를 호출 ....
BlogDiscoverObj.start()
이제 모든 스레드가 위 코드의 두 번째 블록에 있음을 기다리려고했습니다. 어두운 스레드 = 새 스레드 (AddressOf processQuery)카운트 = 10 + 1 카운트 thread.Name = "웜"& 카운트 thread.Start (landingPage) numThread> 대화 목록 Thread.join를() 각 스레드를 위해 그 = 10 다음 numThread = 0 계속하면 그렇지 numThread = numThread + 1 의 SyncLock 대화 목록 ThreadList.Add (스레드) 끝의 SyncLock 최종면 끝 하면 다음
들어 Thread.Sleep(1000)
For Each Thread In ThreadList
Thread.Join()
Next
희망이 명확이
또한 내 메인 스레드는 사용자가에서 다른 옵션을 선택하지 않으면 종료 백그라운드 프로세스를 기다리는이 배경이 실행이라고하지만 메인 쓰레드가 예상되는 곳에서 폼을 실행하다 주요 양식.