2014-10-24 6 views
0

많은 웹 사이트를 탐색하고 텍스트 상자에 텍스트가 있는지 확인하는 도구를 프로그래밍하고 있습니다. 이제는 멀티 스레딩을 추가하지 않아서 훨씬 더 빠르며, 가장 바람직하게는 동적으로 스레드를 추가합니다. 이것은 내 코드입니다.하지만 범위의 인덱스를 나타 내기 때문에 작동하지 않습니다. 그리고 어쨌든 그것이 작동하는지 의심 스럽습니다.멀티 스레딩 웹 요청?

Dim clsThreads As New Generic.List(Of System.Threading.Thread) 
Dim numberOfthreads As Integer = 1 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    For Each strLine1 As String In TextBox1.Text.Split({vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries) 
     For Each strLine2 As String In TextBox2.Text.Split({vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries) 
      clsThreads(numberOfthreads) = New Thread(Sub() Me.request(strLine1, strLine2)) 
      clsThreads(numberOfthreads).Name = "Thread: " + numberOfthreads.ToString 
      clsThreads(numberOfthreads).IsBackground = True 
      clsThreads(numberOfthreads).Start() 

      numberOfthreads = numberOfthreads + 1 
      If (numberOfthreads.Equals(20)) Then 
       numberOfthreads = 0 
      End If 

     Next 
    Next 
End Sub 

그렇다면 어떻게 스마트 방식으로 멀티 스레딩을 구현할 수 있습니까?

이 내 요청 하위입니다 :

Public Sub request(ByVal username, ByVal mail) 
    Dim req As WebRequest = WebRequest.Create("http://localhost/" + username) 
    req.Method = "GET" 
    Dim res As WebResponse = req.GetResponse() 
    Dim dataStream As Stream = res.GetResponseStream() 
    Dim reader As New StreamReader(dataStream) 
    Dim responseFromServer As String = reader.ReadToEnd() 
    If responseFromServer.Contains(mail) Then 
     TextBox3.Text = TextBox3.Text + vbNewLine + username 
    End If 
End Sub 

최종 등급이 같은

답변

0

뭔가?

Option Strict On 
Option Explicit On 
Option Infer Off 
Public Class Form1 
    Dim ActiveThreads As New List(Of System.Threading.Thread) 
    Delegate Sub delRemoveThread(thread As Threading.Thread) 
    Sub removeThread(thread As Threading.Thread) 
     If Me.InvokeRequired Then 
      Me.Invoke(New delRemoveThread(AddressOf removeThread), thread) 
     Else 
      ActiveThreads.Remove(thread) 
     End If 
    End Sub 
    Private Sub Button1_Click3(sender As Object, e As EventArgs) Handles Button1.Click 
     For i As Integer = 1 To 20 
      Dim th As New Threading.Thread(New Threading.ParameterizedThreadStart(Sub() 
                         request("username", "mail") 
                         removeThread(Threading.Thread.CurrentThread) 
                        End Sub)) 
      th.Start() 
     Next 
    End Sub 
    Public Sub request(ByVal username As String, ByVal mail As String) 
     Dim req As Net.WebRequest = Net.WebRequest.Create("http://localhost/" + username) 
     req.Method = "GET" 
     Dim res As Net.WebResponse = req.GetResponse() 
     Dim dataStream As IO.Stream = res.GetResponseStream() 
     Dim reader As New IO.StreamReader(dataStream) 
     Dim responseFromServer As String = reader.ReadToEnd() 
     If responseFromServer.Contains(mail) Then 
      TextBox3.Text = TextBox3.Text + vbNewLine + username 
     End If 
    End Sub 
End Class