Public Sub downloadFile(ByVal url As String)
LogFile.displayMessage("add url=" & url)
downloadURLs.Enqueue(url)
If t Is Nothing Then
LogFile.displayMessage("create new thread")
t = New Thread(AddressOf ThreadedDownloadFile)
End If
If Not t.IsAlive Then
LogFile.displayMessage("start thread")
t.Start()
End If
End Sub
Private Sub download()
LogFile.displayMessage("thread running count=" & downloadURLs.Count)
If downloadURLs.Count > 0 Then
Dim client = New WebClient()
AddHandler client.DownloadFileCompleted, AddressOf downloadFileCompleted
AddHandler client.DownloadProgressChanged, AddressOf downloadProgressChanged
Dim url = downloadURLs.Dequeue()
LogFile.displayMessage("downloading url=" & url)
url = WebRequest.Create(url).GetResponse.ResponseUri.AbsoluteUri
Dim fileName = url.Substring(url.LastIndexOf("/") + 1)
progress = 0
LogFile.displayMessage("downloading NOW NOW NOW url=" & url)
client.DownloadFile(New Uri(url), localAddress & fileName)
End If
LogFile.displayMessage("thread end")
End Sub
Private Sub downloadFileCompleted() 'ByVal sender As Object, ByVal e As DownloadStringCompletedEventArgs)
LogFile.displayMessage("download complete ") ' & e.Result)
LogFile.displayMessage("set next download going")
download()
End Sub
但是在第二轮它获取了url然后在下载文件处停止。
它也是downloadfileasync
。
我看过很多网页都在讨论这个,但没有一个可以解决这个问题
有谁知道如何解决这个问题?
其他详细信息
我确实开始一个新线程,但无论我怎么做,webclient.downloadfile或downloadfileasync等。 他们似乎第一次工作得很好,但是在第二次调用时,他们似乎确实在文件出现时下载,但进程调用从未进行,并且它永远不会返回完成。
我已经尝试过处理,然后什么也没有,然后重新声明它,甚至在处置后强行收集垃圾,没有。
但它仍然不想工作。
我正在探索自己通过溪流进行转移
答案 0 :(得分:1)
我建议线程仍处于活动状态,因为您不检查该条件。
尝试按如下方式更改代码以测试我的理论:
If Not t.IsAlive Then
LogFile.displayMessage("start thread")
t.Start()
else
LogFile.DisplayMessage("Thread was still active")
End If
我原以为你会想要每次都开始一个新主题?
答案 1 :(得分:0)
问题与下载无关,就是这段代码: -
Dim wrequest = WebRequest.Create(url)
Dim wresponce = wrequest.GetResponse()
'save new url to be returned
return wresponce.ResponseUri.AbsoluteUri
'save new url to be returned
return wresponce.ResponseUri.AbsoluteUri
我现在调用close并在使用后将实例置空。