Shr*_*ers 4 c# async-await uwp
在UWP应用程序(或任何带有UI的C#应用程序)中,当异步方法尚未完成但用户导航离开页面时会发生什么?我更具体的关注是,当等待完成时,异步方法将继续并修改某些UI元素,但用户已经离开页面.
| 用户输入Page
| 点击按钮
| 进入异步方法
| 点击等待(返回到处理事件)
| 用户导航远离Page
| 等待方法完成
| ?
此时,异步方法是否继续?如果它确实继续,并且它尝试修改UI元素,那么应用程序是否会因为页面不再存在而崩溃?
是.异步方法将继续,您的页面将存在于内存中.您的方法可以进行修改,但显然它们是不必要的更改.除非您尝试访问不再存在的元素,否则您的应用不应崩溃.比如从屏幕上卸下后现在空的Panel.Children[2].Opacity = 0地方Panel.(只是一个例子)
如果您的方法运行了很长时间,您应该使用某种CancellationToken或某种标志取消操作,以允许您"提前"运行例程.