SuspendingEventHandler 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示将处理 Suspending 事件的方法。
public delegate void SuspendingEventHandler(Platform::Object ^ sender, SuspendingEventArgs ^ e);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
class SuspendingEventHandler : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
public delegate void SuspendingEventHandler(object sender, SuspendingEventArgs e);
Public Delegate Sub SuspendingEventHandler(sender As Object, e As SuspendingEventArgs)
参数
- sender
-
Object
Platform::Object
IInspectable
附加处理程序的对象。
事件数据。
- 属性
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
|
示例
此代码示例演示此事件的典型使用模式。 此代码由许多 XAML 示例(例如 输入示例)用作 app.xaml 文件代码隐藏的一部分。 如果浏览 XAML 示例,可以找到此代码中引用的 SuspensionManager
类 API 的源代码。
async protected void OnSuspending(object sender, SuspendingEventArgs args)
{
SuspendingDeferral deferral = args.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
Private Async Sub OnSuspending(sender As Object, args As SuspendingEventArgs)
Dim deferral As SuspendingDeferral = args.SuspendingOperation.GetDeferral
Await SuspensionManager.SaveAsync
deferral.Complete()
End Sub
注解
每当用户切换到另一个应用或桌面时,系统就会暂停你的应用,并在用户切换回应用时恢复你的应用。 但是,系统还可以在应用暂停时终止应用,以释放资源。 因此,应处理 Suspending 事件以执行以下操作:
- 保留用户会话状态。
- 释放资源上的任何排他锁。
- 尽可能减少内存使用量。 例如,序列化任何在重新激活后易于以对象形式重新构造的数据。
- 保存应用状态。 暂停事件是应用在终止之前收到的唯一指示, (如果它) 发生。 因此,应存储足够的会话状态 (,例如正在阅读的当前文章或当前电影播放位置) ,以在激活期间重新创建完全相同的体验。 内容创建应用的指南是尽早保存用户的工作,并且经常在 暂停期间提交最后一次保存。 在挂起之前保存数据很有用,因为 Suspending 事件处理程序只有 5 秒的时间来完成其操作。
如果应用已终止,可以在 OnLaunched 方法重写中还原应用状态。 如果应用在终止之前恢复,系统会自动还原应用状态。 仅当需要刷新应用暂停时可能已更改的任何显示内容(例如新闻源或用户的位置)时,才应处理 Resuming 事件。