Estoy descargando un archivo desde un sitio FTP (Async) y necesito actualizar una barra de progreso. He leído la documentación de MS que indica que esto se puede hacer es que GetWebRequest() de la clase WebClient esté ovverriden, por lo que la propiedad 'UsePassive' se establece en 'false'. He hecho esto pero el argumento del evento 'DownloadProgressChanged' ProgressPercentage siempre es == '0'.Cómo mostrar el progreso de la descarga desde FTP
¿Puede alguien decirme cómo obtener este argumento para comenzar a devolver los valores?
Este es el método de descarga:
FTPClient request = new FTPClient();
request.Credentials = new NetworkCredential(user, password);
request.DownloadProgressChanged += UpdateProgress;
request.DownloadFileAsync(ftpepath,destinationpath);
Ésta es la FtpClient (donde estoy preponderantes con GetWebRequest()):
class FTPClient : WebClient
{
protected override WebRequest GetWebRequest(System.Uri address)
{
FtpWebRequest req = (FtpWebRequest) base.GetWebRequest(address);
req.UsePassive = false;
return req;
}
}
Y mi devolución de llamada si ayuda:
void UpdateProgress(object sender, DownloadProgressChangedEventArgs e)
{
dwnProgress.Value = e.ProgressPercentage;
dwnprcnt.Text = PercentProgress.ToString() + "%";
}
Para mostrar el progreso que tiene que llamar a la función en un hilo separado para que no bloquee la interfaz de usuario de la aplicación si su para o página web. –