c# - 如何在 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();
}
解决方案
您可以使用 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();
}
推荐阅读
- r - 如何在不覆盖填充组的情况下更改箱线图点颜色
- powerbi - PBI Measure 将列值分成行
- sql - 如何使用 T-SQL 在对象数组中更新插入 JSON 属性
- azure-logic-apps - Word Online (Business) Connector - 填充 Microsoft Word 模板 - 如何动态添加新参数?
- netsuite - Netsuite - 如何添加点击拨号到所有电话号码
- ms-access - Access 2000 中的回车
- shell - 将变量传递给shell中的查询
- angular - Angular 8 typescript number 值作为字符串传入
- python - 使用 Python 从 SQL Server 和 Oracle 进行内部连接查询
- wordpress - 在 woocommerce 上订购时的其他详细信息