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 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章