У меня есть WebClient, который я использую для загрузки файла следующим образом, base64Encoded - это изображение, закодированное в виде строки base64, поскольку именно этого ожидает сервер imgur:
public Upload()
{
WebClient webClient = new WebClient();
webClient.UploadProgressChanged += new UploadProgressChangedEventHandler(webClient_UploadProgressChanged);
webClient.UploadValuesCompleted += new UploadValuesCompletedEventHandler(webClient_UploadValuesCompleted);
NameValueCollection values = new NameValueCollection();
values.Add("key", "imgur api key");
values.Add("image", base64Encoded);
webClient.UploadValuesAsync(new Uri("http://api.imgur.com/2/upload"), "POST", values);
}
Это обработчик события для UploadProgressChanged:
private void webClient_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
int percentage = e.ProgressPercentage * 2;
progressBar.Value = percentage;
percentageTextBlock.Text = (percentage).ToString() + "%";
}
Теперь моя проблема в том, что обработчик событий вызывается только один раз в самом начале, сообщает ProgressPercentage
из 50 и больше не вызывается. Файл успешно загружен, но мой индикатор не работает. Это не потому, что я загружаю небольшой файл, поскольку я также пробовал это с файлами размером несколько мегабайт, которые также сразу сообщают о ProgressPercentage
из 50. e.BytesSent
тоже не поможет, потому что он тоже равен e.TotalBytesToSend
. Что здесь происходит?