Sto scaricando un file da un sito FTP (Async) e ho bisogno di aggiornare una barra di avanzamento. Ho letto la documentazione MS che afferma che questo può essere fatto è GetWebRequest() della classe WebClient è ovverriden così la proprietà 'UsePassive' è impostata su 'false'. Ho fatto questo, ma l'argomento dell'evento 'DownloadProgressChanged' ProgressPercentage è sempre == '0'.Come visualizzare il download del download da FTP
Qualcuno può dirmi come ottenere questo argomento per iniziare a restituire valori?
Questo è il metodo di download:
FTPClient request = new FTPClient();
request.Credentials = new NetworkCredential(user, password);
request.DownloadProgressChanged += UpdateProgress;
request.DownloadFileAsync(ftpepath,destinationpath);
Questo è il FTPClient (dove sto imperativi GetWebRequest()):
class FTPClient : WebClient
{
protected override WebRequest GetWebRequest(System.Uri address)
{
FtpWebRequest req = (FtpWebRequest) base.GetWebRequest(address);
req.UsePassive = false;
return req;
}
}
E la mia richiamata se aiuta:
void UpdateProgress(object sender, DownloadProgressChangedEventArgs e)
{
dwnProgress.Value = e.ProgressPercentage;
dwnprcnt.Text = PercentProgress.ToString() + "%";
}
Per mostrare lo stato di avanzamento è necessario chiamare la funzione in un thread separato in modo che non bloccare l'interfaccia utente dell'applicazione se il suo favore o pagina web. –