DownloadFileAsync geht immer noch ned

24/04/2008 - 14:33 von Michael Rubin | Report spam
Hallo Freunde,

Des geht immer noch ned, ich krieg echt gleich'n Abgang, jetzt hab ich mal
ein Beispiel-Code, der nicht's tut aber tun müsste.

Imports System.Net
Imports System.IO

Module Main
Private WithEvents ftp As New WebClient

Public Sub Main()
DownloadFTPFile("", "",
"http://www.rarlab.com/rar/wrar371d....exe", True)
End Sub

Private Sub ftp_DownloadProgressChanged(ByVal sender As Object, ByVal e
As System.Net.DownloadProgressChangedEventArgs) Handles
ftp.DownloadProgressChanged
MsgBox(e.ProgressPercentage & " %")
End Sub

Private Sub DownloadFTPFile(ByVal User As String, ByVal Passwort As
String, ByVal RemoteFile As String, ByVal LocalFile As String, ByVal Exist As
Boolean)
Dim adress As New Uri(RemoteFile) 'URL Wandeln
ftp.Credentials = New NetworkCredential(User, Passwort) 'Auth
If file.Exists(LocalFile) Then
If Exist = True Then
Kill(LocalFile) 'Fals vorhanden, löschen
ftp.DownloadFileAsync(adress, LocalFile) 'File Holen
Else
MsgBox("File bereits vorhanden. Download wird abgebrochen!")
End If
Else
ftp.DownloadFileAsync(adress, LocalFile) 'File Holen
End If
End Sub

Private Sub ProgessChanged(ByVal sender As Object, ByVal e As
DownloadProgressChangedEventArgs) Handles ftp.DownloadProgressChanged
'ProgressBar.Value = e.ProgressPercentage 'progress Bar
MsgBox(e.ProgressPercentage + "%")
End Sub
End Module

Helft mir bitte!
mfg. Michael Rubin
-
Bitte schicken Sie nur Antworten an die Newsgroup.
Die angegebene email-Adresse ist ein Spam-Sammler
 

Lesen sie die antworten

#1 Armin Zingler
24/04/2008 - 15:03 | Warnen spam
"Michael Rubin" schrieb
Public Sub Main()
DownloadFTPFile("", "",
"http://www.rarlab.com/rar/wrar371d....exe", True)



Hier noch einfügen:

Application.Run(New Form)

End Sub




Das soll nicht die Lösung sein sondern nur zeigen, dass es im Prinzip
funktioniert. Grund ist, dass der Download-Thread als Hintergrundthread
làuft und dadurch automatisch mit in den Tod gerissen wird, wenn der
Hauptthread (deine Sub Main) beendet wird. Siehe Doku zu
Thread.IsBackground.

In dem Beispiel hat der Hintergrundthread wenig Sinn, da nichts parallel
laufen muss (ist keine Kritik sondern nur eine Feststellung). Ansonsten
musst du entweder beim Beenden der Anwendung auf den Hintergrundthread
warten, oder ihn (nach Nachfrage) beenden oder die Aufgabe kontrolliert
in einem Nicht-Hintergrundthread (IsBackground = false) laufen lassen.

"Handles ftp.DownloadProgressChanged" hast du übrigens zweifach drin.


Da kein direkter Zugriff auf das Thread-Objekt möglich ist, könnte das
so aussehen: (nur Prinzip)

Private MRE As New Threading.ManualResetEvent(False)

Public Sub Main()
DownloadFTPFile("", "", _
"http://www.rarlab.com/rar/wrar371d.exe", _
"d:\wrar371d.exe", True)

MRE.WaitOne()

End Sub


Private Sub ftp_DownloadFileCompleted( _
ByVal sender As Object, _
ByVal e As System.ComponentModel.AsyncCompletedEventArgs) _
Handles ftp.DownloadFileCompleted

MRE.Set()

End Sub

Hàngt (wie immer) von deinen Ablàufen ab, wie du es letztendlich löst.


Armin

Ähnliche fragen