在 Visual Studio 中调试 UWP 应用时触发暂停、恢复和后台事件

如果未调试,Windows 进程生存期管理 (PLM)将控制应用的执行状态-启动、暂停、恢复和终止应用,以响应用户作和设备的状态。 调试时,Windows 将禁用这些激活事件。 本主题介绍如何在调试器中触发这些事件。

本主题还介绍如何调试 后台任务。 即便应用未运行,后台任务也能在后台处理某些操作。 可以使用调试器将应用置于调试模式,然后(无需启动 UI)启动和调试后台任务。

有关进程生存期管理和后台任务的详细信息,请参阅 启动、恢复和多任务

触发进程生存期管理事件

当用户离开应用或 Windows 进入低功率状态时,Windows 可能会暂停你的应用。 可以响应 Suspending 事件,将相关的应用和用户数据保存到持久性存储和释放资源。 当应用从 暂停 状态恢复时,它将进入 “正在运行 ”状态,并从暂停时继续。 可以响应 Resuming 事件以还原或刷新应用程序状态并回收资源。

尽管 Windows 尝试尽可能多地将挂起的应用保留在内存中,但如果没有足够的资源来将其保留在内存中,Windows 可以终止你的应用。 用户还可以显式关闭应用。 没有特殊事件可指示用户已关闭应用。

在 Visual Studio 调试器中,可以手动挂起、恢复和终止应用以调试进程生命周期事件。 调试进程生命周期事件:

  1. 在要调试的事件的处理程序中设置断点。

  2. F5 开始调试。

  3. “调试位置” 工具栏上,选择要触发的事件:

    挂起、恢复、终止和后台任务

    暂停并终止 关闭应用并结束调试会话。

触发后台任务

任何应用都可以注册后台任务以响应某些系统事件,即使应用未运行。 后台任务无法运行直接更新 UI 的代码;而是向用户显示磁贴更新、锁屏提醒更新和 Toast 通知的信息。 有关详细信息,请参阅 使用后台任务为应用程序提供支持

可以从调试器触发启动应用的后台任务的事件。

注释

调试器只能触发不包含数据的那些事件,例如指示设备状态更改的事件。 必须手动触发需要用户输入或其他数据的后台任务。

触发后台任务事件的最现实方法是应用未运行。 但是,还支持在标准调试会话中触发事件。

从标准调试会话触发后台任务事件

  1. 在要调试的后台任务代码中设置断点。

  2. F5 开始调试。

  3. “调试位置” 工具栏上的事件列表中,选择要启动的后台任务。

    挂起、恢复、终止和后台任务

在应用未运行时触发后台任务

  1. 在要调试的后台任务代码中设置断点。

  2. 打开启动项目的调试属性页。 在“解决方案资源管理器”中,选择 项目。 在 “调试” 菜单上,选择 “属性”。

    对于C++项目,展开 “配置属性 ”,然后选择“ 调试”。

  3. 执行下列操作之一:

    • 对于 Visual C# 和 Visual Basic 项目,请选择 “不启动”,但在启动代码时调试代码

      C#/VB 调试启动应用程序属性

    • 对于C++项目,请从“启动应用程序”列表中选择“否”。

      C++/VB 启动应用程序调试属性

  4. F5 将应用置于调试模式。 请注意,“调试位置”工具栏上的“进程”列表显示应用包名称,指示你处于调试模式。

    后台任务进程列表

  5. “调试位置” 工具栏上的事件列表中,选择要启动的后台任务。

    暂停、恢复、终止和后台任务

从已安装的应用触发进程生存期管理事件和后台任务

使用 “调试安装的应用包 ”对话框加载已安装到调试器中的应用。 例如,可以调试从 Microsoft 应用商店安装的应用,或者在应用有源文件时调试应用,但不能调试应用的 Visual Studio 项目。 “ 调试安装的应用包 ”对话框允许你在 Visual Studio 计算机或远程设备上以调试模式启动应用,或者将应用设置为在调试模式下运行,但不能启动它。 有关详细信息,请参阅 调试已安装的应用包

将应用加载到调试器后,可以使用上述任何过程。

诊断后台任务激活错误

Windows 事件查看器中用于后台基础结构的诊断日志包含可用于诊断和排查后台任务错误的详细信息。 若要查看日志,请执行以下步骤:

  1. 打开事件查看器应用程序。

  2. “作 ”窗格中,选择 “查看” 并确保选中 “显示分析和调试日志 ”。

  3. 事件查看器(本地)树中,依次展开节点应用程序和服务日志>Microsoft>Windows>BackgroundTasksInfrastructure

  4. 选择 诊断 日志。