0

我有问题。我正在使用 Visual Studio 2013 (Visual Basic),在我的计算机上一切正常,但在其他计算机上却不行。

示例:没有调用 client1.DownloadFileAsync,即使没有下载文件也会调用 client1_DownloadCompleted。为什么它只是被跳过!?

代码(在 DownloadButton_Click 上):`

            AddHandler client1.DownloadProgressChanged, AddressOf client_ProgressChanged
            AddHandler client1.DownloadFileCompleted, AddressOf client1_DownloadCompleted
            AddHandler client2.DownloadProgressChanged, AddressOf client_ProgressChanged
            AddHandler client2.DownloadFileCompleted, AddressOf client2_DownloadCompleted
            AddHandler client3.DownloadProgressChanged, AddressOf client_ProgressChanged
            AddHandler client3.DownloadFileCompleted, AddressOf client3_DownloadCompleted
            AddHandler client4.DownloadProgressChanged, AddressOf client_ProgressChanged
            AddHandler client4.DownloadFileCompleted, AddressOf client1_DownloadCompleted
            AddHandler client5.DownloadProgressChanged, AddressOf client_ProgressChanged
            AddHandler client5.DownloadFileCompleted, AddressOf client2_DownloadCompleted
            AddHandler client6.DownloadProgressChanged, AddressOf client_ProgressChanged
            AddHandler client6.DownloadFileCompleted, AddressOf client3_DownloadCompleted


            If CheckBox7.Checked Then
                odkoliko = odkoliko + 1
                Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
                client5.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/s/7wq47s49aw5qrps/Obrisi%20PMF%20Novi%20Sad.lnk"), filePath5)
            End If
            If CheckBox4.Checked Then
                odkoliko = odkoliko + 1
                Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
                client4.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/s/69q4pd281ka3lmf/Repair.exe"), filePath4)
            End If
            If CheckBox2.Checked Then
                odkoliko = odkoliko + 1
                Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
                client1.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/s/u4iy3katgl394wf/PMF%20Novi%20Sad%20UPDATE.exe"), filePath1)
            End If
            If CheckBox5.Checked Then
                odkoliko = odkoliko + 1
                Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
                client2.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/s/tuy0zspy1i1y84u/chatroom.html"), filePath2)
            End If
            If CheckBox3.Checked Then
                odkoliko = odkoliko + 1
                Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
                client6.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/s/1n7oe7d1ms72qo3/Update.exe"), filePath6)
            End If
    End Select
End Sub

Private Sub client_ProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)

End Sub

Private Sub client1_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    koliko = koliko + 1
    Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
    AllDownloadFinished()
End Sub

Private Sub client2_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    koliko = koliko + 1
    Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
    AllDownloadFinished()
End Sub

Private Sub client3_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    koliko = koliko + 1
    Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
    AllDownloadFinished()
End Sub

Private Sub client4_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    koliko = koliko + 1
    Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
    AllDownloadFinished()
End Sub

Private Sub client5_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    koliko = koliko + 1
    Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
    AllDownloadFinished()
End Sub

Private Sub client6_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    koliko = koliko + 1
    Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
    AllDownloadFinished()
End Sub

Public Sub AllDownloadFinished()
    If koliko > odkoliko Then
        Label6.Text = "GOTOVO!"
        ProgressBar1.Style = ProgressBarStyle.Continuous
        ProgressBar1.MarqueeAnimationSpeed = 0
        Panel1.Visible = False
        Panel2.Visible = False
        Panel3.Visible = True
    End If
End Sub`

正如我在我的计算机上所说的那样,代码可以完美运行,但在我朋友的计算机上却不行。也许问题不在于代码,而在于 .NET 框架、Visual c++ Redistributable、Web 部署或其他一些需要安装的 Microsoft 应用程序!?

4

1 回答 1

0

您的代码没有检查异步错误。看到错误后,您就可以进行故障排除了。

尝试这个:

Private Sub client1_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    If e.Error IsNot Nothing Then
        Msgbox(e.Error.Message)
        Exit Sub
    ElseIf e.Cancelled Then
        Msgbox("Cancelled")
        Exit Sub
    End If
    koliko = koliko + 1
    Label8.Text = "Popravlja se " & koliko & "/" & odkoliko & " stavka!"
    AllDownloadFinished()
End Sub

更多信息: http: //msdn.microsoft.com/en-us/library/system.componentmodel.asynccompletedeventargs (v=vs.110).aspx

于 2014-05-01T20:28:14.373 回答