void ShowImageWorker(UIImage image, string status, TimeSpan duration)
{
_progress = -1;
CancelRingLayerAnimation ();
//this should happen when Dismiss is called, but it happens AFTER the animation ends
// so sometimes, the cancel button is left on :(
if (_cancelHud != null) {
_cancelHud.RemoveFromSuperview ();
_cancelHud = null;
}
if (!IsVisible)
Show ();
ImageView.Image = image;
ImageView.Hidden = false;
StringLabel.Text = status;
UpdatePosition ();
SpinnerView.StopAnimating ();
StartDismissTimer (duration);
}