UWP - 如果在async/await运行时离开页面会发生什么?

Shr*_*ers 4 c# async-await uwp

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

| 用户输入Page
| 点击按钮
| 进入异步方法
| 点击等待(返回到处理事件)
| 用户导航远离Page
| 等待方法完成
| ?

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

Lai*_*ith 7

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

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