Pobierany jest plik z witryny FTP (Async) i trzeba zaktualizować pasek postępu. Przeczytałem dokumentację MS, która stwierdza, że można to zrobić, to GetWebRequest() klasy WebClient jest ovverriden, więc właściwość "UsePassive" jest ustawiona na "false". Zrobiłem to, ale argument zdarzenia "DownloadProgressChanged" ProgressPercentage jest zawsze == '0'.Jak wyświetlić postęp pobierania z FTP
Czy ktoś może mi powiedzieć, jak uzyskać ten argument, aby rozpocząć zwracanie wartości?
Jest to metoda pobierania:
FTPClient request = new FTPClient();
request.Credentials = new NetworkCredential(user, password);
request.DownloadProgressChanged += UpdateProgress;
request.DownloadFileAsync(ftpepath,destinationpath);
To FTPClient (gdzie jestem nadrzędnymi GetWebRequest()):
class FTPClient : WebClient
{
protected override WebRequest GetWebRequest(System.Uri address)
{
FtpWebRequest req = (FtpWebRequest) base.GetWebRequest(address);
req.UsePassive = false;
return req;
}
}
i mój oddzwanianie czy to pomaga:
void UpdateProgress(object sender, DownloadProgressChangedEventArgs e)
{
dwnProgress.Value = e.ProgressPercentage;
dwnprcnt.Text = PercentProgress.ToString() + "%";
}
Aby pokazać postęp trzeba wywołać funkcję w osobnym wątku, więc nie blokuje UI aplikacji czy jego rzecz lub strona internetowa. –