Cómo hacer una pausa sin bloquear la interfaz de usuario

Tengo un evento de clic que hace que el teléfono vibre cuando se hace clic en un botón. Esto generalmente funciona muy bien, excepto que a veces la vibración no se detiene hasta que cierro completamente la aplicación. Me gustaría dar tiempo a la aplicación para completar su vibración y luego continuar con el resto del método, pero no quiero bloquear la interfaz de usuario en absoluto. ¿Cómo podría lograr esto?

MainPage.xaml.cs

void newButton_Click(object sender, EventArgs e)
{
    //Button vibration
    if (Settings.EnableVibration.Value)  //boolean flag to tell whether to vibrate or not
    {
        VibrateController.Default.Start(TimeSpan.FromMilliseconds(100));
        //place vibration stop here?
    }        

    this.NavigationService.Navigate(new uri("/NewPage.xaml", UriKind.Relate)); 
}

Ya he intentado VibrationController.Default.Stop (); pero esto elimina completamente la vibración todos juntos. ¿Hay una manera de simplemente esperar hasta que la vibración se haya completado para luego navegar a una nueva página, o realizar cualquier otra acción que deba realizar el método? ¿Alguna recomendación o consejo sobre esta implementación u otras sugerencias?

Respuestas a la pregunta(2)

Su respuesta a la pregunta