因此,我前段時間做了類似的事情,但這本質上是一個(特定)網站的用戶名檢查器,它們可以通過文本文件加載用戶名,它會把它變成一個列表框,現在我有了開始按鈕,它意味着檢查每個用戶名。然而,之前,他們在檢查時凍結了程序,但它工作正常。我試圖讓它「穿線」,所以它不會凍結。線程在結束線程循環之前沒有完成任務
現在的問題是,它不檢查所有,並立即完成。
CODE:
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
Button6.Enabled = False
Dim goodUsers As New SaveFileDialog()
goodUsers.Filter = "TXT file (*.txt)|*.txt"
Dim flag As Boolean
Dim Incomplete As Integer = 0
Dim Taken As Integer = 0
Dim sb As New StringBuilder
If goodUsers.ShowDialog() = DialogResult.OK Then
Dim checkerMT As New Thread(
Sub()
For Each i As String In UsernameList.Items
WebRequest.Create("http://yatobooter.cf/other/checkusr.php?username=" + i.ToString)
Dim cResult As String = New System.Net.WebClient().DownloadString("http://yatobooter.cf/other/checkusr.php?username=" + i.ToString).ToString
If cResult = "taken" Then
flag = False
ElseIf cResult = "nottaken" Then
flag = True
End If
If flag = True Then
sb.Append(i & vbNewLine)
Else
Incomplete = Incomplete + 1
Taken = UsernameList.Items.Count - Incomplete
End If
Next
End Sub
)
checkerMT.Start()
Try
File.WriteAllText(goodUsers.FileName, sb.ToString)
Catch ex As Exception
Exit Sub
End Try
End If
MessageBox.Show("Checking available usernames, complete!", "NameSniper Pro")
Button6.Enabled = True
End Sub
嗯是的......你開始建立'StringBuilder'的線程,但是立即將'StringBuilder'的內容寫入文件,而不用等待線程完成。你是如何期望這項工作的?你需要把文件寫入線程中,並且只顯示一個消息框,當它完成時它就完成了。 –
此外,這裏不是問題,但完全忽略它們捕獲的異常的「Catch」塊幾乎不是一個好主意。當你試圖調試未來的問題時,他們會*不會*幫助你,而你所知道的僅僅是例如該文件實際上並沒有寫入。 –
做'新的System.Net.WebClient()。DownloadString(...)'是內存泄漏。你應該處理'System.Net.WebClient()'。 – Enigmativity