Application.Suspending 事件

定义

当应用程序从其他状态转换为“挂起”状态时发生。

public:
 virtual event SuspendingEventHandler ^ Suspending;
// Register
event_token Suspending(SuspendingEventHandler const& handler) const;

// Revoke with event_token
void Suspending(event_token const* cookie) const;

// Revoke with event_revoker
Application::Suspending_revoker Suspending(auto_revoke_t, SuspendingEventHandler const& handler) const;
public event SuspendingEventHandler Suspending;
function onSuspending(eventArgs) { /* Your code */ }
application.addEventListener("suspending", onSuspending);
application.removeEventListener("suspending", onSuspending);
- or -
application.onsuspending = onSuspending;
Public Custom Event Suspending As SuspendingEventHandler 

事件类型

示例

此代码示例演示此事件的典型使用模式。 许多 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 事件。

Suspending 事件在注册它的同一单元中运行。

适用于

另请参阅