ich einige Features von WebClient
Klasse am Testen und ich beschlossen, zu sehen, wie DownloadProgressChanged
funktioniert so machte ich einen solchen Code auf:Status anzeigen Mit WebClient herunterladen
static void Main(string[] args)
{
WebClient client = new WebClient();
client.Proxy = null;
client.BaseAddress = "ftp://ftp.xxxxxxx.com";
CredentialCache cache = new CredentialCache();
NetworkCredential credential = new NetworkCredential("userxxx", "passxxxx");
client.Credentials = credential;
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
Uri remoteFile;
Uri.TryCreate("/public_html/folderxxxx/Pictures/Product/Resized/1.jpg", System.UriKind.Relative, out remoteFile);
client.DownloadFileAsync(remoteFile, "1.jpg");
System.Diagnostics.Process.Start("1.jpg");
Console.ReadLine();
}
static void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine(e.ProgressPercentage.ToString());
}
Wenn ich diese Anwendung ausführen, das ist, was ich sehe, wie Fortschritt:
Sieht nichts Besonderes. Ben Albahari schlägt vor, einen neuen Thread anstelle der Async-Methode zu verwenden, und dieser Event-Handler ist nützlich, wenn Sie tatsächlich die Async-Methode verwenden.
Also, wie kann ich Progress wirklich zeigen?
EDIT:
Ein passiver FTP-Dateitransfer wird immer einen Fortschritt Prozentsatz der Null zeigen, da der Server die Dateigröße nicht gesendet hat
Laut MSDN soll dies geschehen . Um zu zeigen, Fortschritt, Sie die FTP-Verbindung zum aktiven ändern können, indem Sie die GetWebRequest virtuelle Methode überschrieben:
Beispielcode:
internal class MyWebClient:WebClient{
protected override WebRequest GetWebRequest(Uri address) {
FtpWebRequest req = (FtpWebRequest)base.GetWebRequest(address);
req.UsePassive = false;
return req;
}
}
Was ist das, was ich tat, aber das gleiche Problem passiert:
Haben Sie sich vergewissern, dass der Code tatsächlich einen nicht-passiven Download initiieren? (Schauen Sie sich die Serverprotokolle oder etwas an) –