c# - UWP - 如果在异步/等待运行时离开页面会发生什么?

标签 c# uwp async-await

在 UWP 应用程序(或任何带有 UI 的 C# 应用程序)中,当异步方法尚未完成但用户导航离开页面时会发生什么?我更具体的担心是,当 await 完成时,async 方法将继续并修改某些 UI 元素,但用户已经离开页面。

|用户进入页面
|点击按钮
|进入异步方法
| Hits await(返回处理事件)
|用户离开页面
|等待的方法完成
| ?

此时,async方法是否继续?如果它继续,并尝试修改 UI 元素,应用程序是否会因为页面不再存在而崩溃?

最佳答案

是的。异步方法将继续,您的页面将存在于内存中。您的方法可以进行修改,但显然它们是不必要的更改。你的应用程序不应该崩溃,除非你试图访问不再存在的元素。例如 Panel.Children[2].Opacity = 0 其中 Panel 在从屏幕上卸载后现在是空的。 (只是一个例子)

如果您的方法运行了很长时间,您应该使用 CancellationToken 或某种标志取消操作,以允许您“提前退出”例程。

关于c# - UWP - 如果在异步/等待运行时离开页面会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43565216/

相关文章:

c++ - 从 UWP vc++ 中生成的字节数组生成图像

c# - Entity Framework 中的异步等待支持?

javascript - ES6 生成器——它们真的是异步/等待的替代品吗?

c# - 如何使用后台 worker 将参数(字符串)发送到 UI 线程?

c# - System.Text.Json 中 Newtonsoft.Json 的 JsonProperty 属性的等效项是什么?

c# - UWP FileSavePicker.PickSaveFileAsync() 抛出未指定的错误

c# - 如何从 Xamarin Forms View 创建 native UWP View ?

c# - Azure 存储 REST 组事务 - 请求输入之一超出范围

c# - 如何在页面加载时动态更改 aspx 页面的标题

javascript - 如何在 Lodash _.times 函数中使用异步等待?