WebClient.UploadValuesAsync no actualiza el progreso correctamente

Tengo un WebClient que utilizo para cargar un archivo de la siguiente manera, base64Encoded es una imagen codificada como una cadena base64, ya que eso es lo que espera el servidor 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);        
    }

Este es el controlador de eventos para UploadProgressChanged:

    private void webClient_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
    {
        int percentage = e.ProgressPercentage * 2;

        progressBar.Value = percentage;
        percentageTextBlock.Text = (percentage).ToString() + "%";
    }

Ahora mi problema es que el controlador de eventos solo se llama una vez al principio, informa unProgressPercentage de 50 y luego ya no se llama más. El archivo se carga correctamente, pero mi barra de progreso no funciona. Esto no se debe a que estoy cargando un pequeño archivo, ya que también lo he intentado con archivos de varios mb que también informanProgressPercentage de 50 de inmediato.e.BytesSent tampoco ayuda porque ese es igual ae.TotalBytesToSend de inmediato también. ¿Que esta pasando aqui?