首页 > 解决方案 > 如何在 Task.Delay 之后检查 ContentPage 是否存在

问题描述

我有一个延迟 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();
}

标签: c#xamarin.forms

解决方案


您可以使用 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();
}

推荐阅读