Visual Basic 中的 Web 客户端问题

Issue with Web Client in Visual Basic

我决定为我的工具添加一些下载选项,使用它的人开始报告他们在程序尝试下载文件并安装它们时遇到错误。

这是我使用的代码:

    Private Sub DownloadFiles()
    Dim Locales As WebClient = New WebClient
    AddHandler Locales.DownloadProgressChanged, AddressOf Locales_ProgressChanged
    AddHandler Locales.DownloadFileCompleted, AddressOf Locales_DownloadCompleted
    Label2.Text = "Status: Downloading files..."
    Locales.DownloadFileAsync(New Uri("http://updatesz.ucoz.com/ChangeServer.zip"), DirectoryToInstall & "\ChangeServer.zip")
End Sub

Private Sub Locales_ProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
    NsProgressBar1.Value = e.ProgressPercentage
    Dim bytesIn As Double = Double.Parse(e.BytesReceived.ToString())
    Dim totalBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString())
    Dim percentage As Double = bytesIn / totalBytes * 100
    NsProgressBar1.Value = Int32.Parse(Math.Truncate(percentage).ToString())
End Sub


Private Sub Locales_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    Label2.Text = "Status: Preparing..."
    NsProgressBar1.Value = 0
    DirectoryToInstall = GameDir.Text
    BackgroundWorker.WorkerReportsProgress = True
    Dim A As String() = {DirectoryToInstall, GameDir.Text}
    BackgroundWorker.RunWorkerAsync(A)
End Sub

我的按钮只是:DownloadFiles() 然后它从那里开始......我得到的错误是,好像程序找不到下载的 .zip 文件!

另一个有趣的因素是,程序没有在第一个 运行 上找到下载的 .zip 文件!如果您第二次下载这些相同的文件,它工作正常...

所以我得出了一个结论。该程序下载 .zip 文件并急于解压缩 - 这会导致混乱。 .zip 并没有完全写入。但 Web 客户端已将其报告为已下载。

下载结束后我尝试使用Threading.Thread.Sleep(3000)。确保文件到达计算机 "all the way" 但它没有修复 :(

所以我需要一些帮助!

我现在就要搞乱代码了!如果我发现任何有趣的东西(也许是某种类型的修复,我会在下面 post)

先谢谢你:) !

我将代码切换为:

My.Computer.Network.DownloadFile(("http://updatesz.ucoz.com/ChangeServer.zip"), DirectoryToInstall & "\ChangeServer.zip")

...并将代码添加到我已经内置的另一个进度条中!虽然这不是我的目标,但完成后我非常喜欢它。