Vb.net WebClient.DownloadFileAsync 在 xp 和 8.1 上不起作用

Posted

技术标签:

【中文标题】Vb.net WebClient.DownloadFileAsync 在 xp 和 8.1 上不起作用【英文标题】:Vb.net WebClient.DownloadFileAsync wont work on xp and 8.1 【发布时间】:2014-11-24 11:23:23 【问题描述】:

嗨,我在 vb.net 中创建了一个更新功能,当准备好下载新更新时,它会通知我的用户

所以这一切都适用于 win 8 和 7,但是当我尝试在 xp 和 8.1 上运行它时,它只会完成下载但不下载任何文件:s

这是我的代码:

Imports System.Net

Public Class Form5
    Private Sub LogInButton1_Click(sender As Object, e As EventArgs) Handles LogInButton1.Click
        Dim client As WebClient = New WebClient
        AddHandler client.DownloadProgressChanged, AddressOf client_ProgressChanged
        AddHandler client.DownloadFileCompleted, AddressOf client_DownloadCompleted
        client.DownloadFileAsync(New Uri("FILE the download"), "C:\users\" & System.Environment.UserName & _
                                 "\AppData\Local\Software_update.exe")
        LogInButton1.Text = "Download in Progress"
        LogInButton1.Enabled = False
    End Sub

    Private Sub client_ProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
        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

        LogInProgressBar1.Value = Int32.Parse(Math.Truncate(percentage).ToString())
    End Sub

    Private Sub client_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        MessageBox.Show("Download Complete please restart the app ")
        LogInButton1.Text = "Download Complete"
    End Sub

    Private Sub Form5_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        Form1.Close()
    End Sub
End Class

注意我还没有在 Vista 上测试过这个

【问题讨论】:

几乎可以肯定会抛出异常。该异常是通过DownloadCompleted 事件处理程序中的e.Error 属性提供给您的。看看它,它会告诉你出了什么问题。你真的应该知道这一点,因为你应该已经阅读了 WebClient 类和你正在使用的成员的文档。 【参考方案1】:

我已经解决了这个问题,问题是每个操作系统的 appdata 文件夹都不同:D

我用这个来修复它

Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData)


client.DownloadFileAsync(New Uri("FILE_URL"), appData & "\Software_update.exe")

【讨论】:

以上是关于Vb.net WebClient.DownloadFileAsync 在 xp 和 8.1 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

VB.Net和C#.Net有啥差异?优缺点是啥?

VB.net中如何嵌套EXCEL?

vb.net 有没有++(增1)和--(减1)运算符?

VB.NET求帮忙!...

C# 和 VB.NET 的优缺点?

VB.net 和C#.net 各有啥优缺点