Обновите интерфейс, затем добавьте задержку - PullRequest
0 голосов
/ 01 октября 2018

Я работаю над проектом форм Xamarin Использование Visual Studio 2017. Я хочу обновить пользовательский интерфейс, добавить задержку и перейти на другую страницу.Я попытался следующий код и обновить интерфейс после задержки, а затем без задержки перейти на следующую страницу.

private void btnAccept_Clicked(object sender, System.EventArgs e)
{
    Device.BeginInvokeOnMainThread(() =>
    {
        SetSuccess();
    });
}



private void SetSuccess()
{
    this.lblStatus.Text = "Thank you";
    this.imageFinger.Source = "kioskQrCodeSuccess.png";
    this.scanProgressBar.IsVisible = false;
    this.LabelInfo.IsVisible = false;

    Stopwatch s = new Stopwatch();
    s.Start();
    while (s.Elapsed < TimeSpan.FromSeconds(3))
    {
    }

    s.Stop();

    App.Current.MainPage = new NavigationPage(new Profile());
}

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете использовать Task.Delay в асинхронном обработчике событий.

private async void btnAccept_Clicked(object sender, System.EventArgs e) {
    //On UI Thread
    SetSuccess();

    //Non blocking wait
    await Task.Delay(TimeSpan.FromSeconds(3));

    //Back on UI thread
    App.Current.MainPage = new NavigationPage(new Profile());
}

private void SetSuccess() {
    this.lblStatus.Text = "Thank you";
    this.imageFinger.Source = "kioskQrCodeSuccess.png";
    this.scanProgressBar.IsVisible = false;
    this.LabelInfo.IsVisible = false;
}
0 голосов
/ 01 октября 2018

try Device.StartTimer вместо

Device.StartTimer(TimeSpan.FromSeconds(3), () =>
{
    // Do something

    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...