如何在Task.Delay之后检查ContentPage是否还存在

时间:2019-01-24 19:28:00

标签: c# xamarin.forms

我有一个延迟5秒的页面,因为需要向用户运行加载,因为Web服务太快并且用户需要查看加载,所以我需要这样做。 Page02具有取消按钮,单击该按钮后,应用程序将转到Page01。

问题是当我取消操作时,无论如何都会运行延迟后的代码。

如何避免这种情况?

public Page02()
{
    InitializeComponent ();           
    GetData();
}

private async void GetData()
{
    await Task.Delay(5000);
    MainPage.actualPage.PushAsync(new Page03());
}

private void Cancel_Clicked(object sender, EventArgs e)
{
    App.Current.MainPage = new Page01();
}

1 个答案:

答案 0 :(得分:0)

您可以使用bool来检查它们在进入Page03之前是否已取消。像这样...

private bool isCancelled = false;

private async void GetData()
{
    await Task.Delay(5000);
    if (!isCancelled)
        MainPage.actualPage.PushAsync(new Page03());
}

private void Cancel_Clicked(object sender, EventArgs e)
{
    isCancelled = true;
    App.Current.MainPage = new Page01();
}