Здравствуйте, у меня проблема с использованием этого кода для загрузки файлов. Когда я загружаю небольшие файлы, такие как jpg или png, это прекрасно работает, но когда я пытаюсь загрузить большие файлы, такие как tar, rar или zip, у меня возникает проблема с индикатором выполнения.
Это мой код
WebClient client;
private void button1_Click(object sender, EventArgs e)
{
string url = textBox1.Text;
if (!string.IsNullOrEmpty(url))
{
Thread thread = new Thread(() =>
{
Uri uri = new Uri(url);
string filename = System.IO.Path.GetFileName(uri.AbsolutePath);
client.DownloadFileAsync(uri, Application.StartupPath + "/" + filename);
});
thread.Start();
}
}
and this in form load
client = new WebClient();
client.DownloadProgressChanged += Client_DownloadProgressChanged;
client.DownloadFileCompleted += Client_DownloadFileCompleted;
and this is the operator
private void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
Invoke(new MethodInvoker(delegate ()
{
progressBar1.Minimum = 0;
double reciverd = double.Parse(e.BytesReceived.ToString());
double total = double.Parse(e.TotalBytesToReceive.ToString());
double precentage = e.ProgressPercentage;
label1.Text = $"Downloaded{string.Format("{0:0##}", precentage)}%";
//progressBar1.Value = int.Parse(Math.Truncate(precentage).ToString());
progressBar1.Value = (int)precentage;
}));
}
Отредактировано
Теперь индикатор выполнения и загрузка работают, но они переходят прямо от 0 до 100, когда загрузка завершена и уровень прогресса не виден.