如何禁用 UWP 应用程序暂停?

hwa*_*ien 7 c# uwp

我正在使用 C# 为仅在台式计算机上运行的 Windows 10 开发 UWP 应用程序,目标平台版本为 10.0.14393.0。由于业务需求,应用程序生命周期必须像传统的 Win32 应用程序一样运行。

因此,我按照本文中的建议请求ExtendedExecutionSession 使用ExtendedExecutionReason.Unspecified. 我还将 Windows 配置为从不休眠和从不休眠。

尽管如此,在极少数情况下,Windows 将有理由撤销扩展执行会话,SystemPolicy然后继续暂停 UWP 应用程序。

两个问题:

  1. 我如何获得更多信息(系统日志?事件日志?)关于是什么导致 Windows 撤销扩展执行会话?
  2. 如何摆脱这些罕见的暂停情况,以便 UWP 应用程序生命周期的行为与 Win32 应用程序完全一样(即,保持运行直到用户明确停止运行)?

谢谢!

A. *_*lto 7

ExtendedExecutionSessionwithExtendedExecutionReason.Unspecified是关于资源消耗的多重限制。由于您的测试设备没有电池,因此您的应用程序挂起的最可能原因是它的高内存使用。您可以尝试在内存消耗方面优化应用程序并按照文档建议使用内存管理 API,但这仍然不能保证您的应用程序永远不会被挂起。

如果您的应用面向商业领域,那么您可能会考虑使用更强大ExtendedExecutionForegroundSessionExtendedExecutionSession. 这可能是您问题的完美解决方案。但这是一项受限制的功能,这意味着 Windows 应用商店不允许使用使用它的应用程序 - 仅适用于企业版 Windows 应用商店。您还需要extendedExecutionUnconstrained在清单中手动声明功能(请参阅文档特殊和受限功能部分)以利用 API。

或者,您可以使用黑客来防止应用程序长时间暂停:

  1. 按照pnp0a03 的建议,使用应用服务与 Win32 应用进行通信。

  2. 使用后台媒体播放在后台无限循环播放无声音频样本(即使用户手动停止播放或其他应用暂停播放自己的背景音频,您的应用也可以跟踪并自动重新开始播放)。