title: UIProgressView not updating from BackgroundWorker.ProgressChanged
body: <p>I'm in the process of porting my Xamarin.Android app to Xamarin.iOS, I can't make my progress bar update, where am I going wrong? </p>
  
  <p>The values are set in <code>updateProgressBar()</code> correctly and <code>progressBarValue</code> in this example is set as 0.25 as expected, but the UIProgressView is not updated on the screen. <code>progressBar</code> is a <code>UIProgressView</code> on the storyboard.</p>
  
  <pre><code>public BackgroundWorker backgroundWorker { get; private set; }
  private float progressBarValue { get; set; }
  
  public override void ViewDidAppear(bool animated)
  {
      base.ViewDidAppear(animated);
      startBackgroundWorker();
  }
  
  private void startBackgroundWorker()
  {
      if (backgroundWorker == null || backgroundWorker.CancellationPending) backgroundWorker = new BackgroundWorker();
      backgroundWorker.DoWork += (s, e) =&gt;
      {
          //do stuff  
          backgroundWorker.ReportProgress(25);
          //do stuff
      };
      backgroundWorker.RunWorkerCompleted += (s, e) =&gt; { //do stuff };
      backgroundWorker.ProgressChanged += (s, e) =&gt; { updateProgressBar(e.ProgressPercentage); };
      backgroundWorker.WorkerReportsProgress = true;
      backgroundWorker.RunWorkerAsync();
  }
  
  private void updateProgressBar(float v)
  {
      if (v &gt; 0){
          float value = v / 100;
          progressBarValue = progressBarValue + value;
          if (progressBarValue &gt; 1) progressBarValue = 1;
          progressBar.Progress = progressBarValue;
      }
  }
  </code></pre>
  
  <p>I also tried using <code>SetProgress(progressBarValue,true)</code></p>
  
  <pre><code>private void updateProgressBar(float v)
  {
      if (v &gt; 0){
          float value = v / 100;
          progressBarValue = progressBarValue + value;
          if (progressBarValue &gt; 1) progressBarValue = 1;
          progressBar.SetProgress(progressBarValue,true);
      }
  }
  </code></pre>
  
  <p>and using <code>InvokeOnMainThread</code></p>
  
  <pre><code>private void updateProgressBar(float v)
  {
      if (v &gt; 0){
          float value = v / 100;
          progressBarValue = progressBarValue + value;
          if (progressBarValue &gt; 1) progressBarValue = 1;
          InvokeOnMainThread ( () =&gt; {
              // manipulate UI controls
              progressBar.SetProgress(progressBarValue,true);
          });
      }
  }
  </code></pre>