重启 API
重启 API 使任何应用(包括打包的或未打包的 Win32 应用)能够在命令上终止并重启自身,包括为重启的实例提供任意命令行字符串的功能。
定义
public static AppRestartFailureReason Restart(String arguments)
parameters
arguments
: 字符串
要传递给重启实例的参数。
返回
重启 API 返回 AppRestartFailureReason
。
先决条件
若要在 Windows 应用 SDK 中使用应用生命周期 API,请执行以下操作:
- 下载并安装 Windows 应用 SDK 的最新版本。 有关详细信息,请参阅安装适用于 Windows 应用 SDK 的工具。
- 按照说明创建你的第一个 WinUI 3 项目,或者在现有项目中使用 Windows App SDK。
此 Restart 方法是什么?
对于 Win32 应用,存在以下可能的重启机制:
- Win32 API RegisterApplicationRestart 使应用能够注册在终止后重启自身,并为重启的实例提供任意命令行字符串。 终止的原因包括应用崩溃或挂起、应用更新或系统更新。
但是,以下方案存在差距:
- Win32 应用可以向 OS 注册以在特定应用/OS 状态下重启,但 无法从正常状态启动重启
此重启 API 使 Win32 应用程序能够终止并重启命令,并与 CoreApplication 的现有 CoreApplication.RequestRestartAsync 保持一致。
使用命令行参数重启
只需调用 Restart 方法,并为重启的实例指定一个任意命令行字符串即可。 重启是同步完成的,不需要进一步的操作或处理。 如果重启因某种原因失败,则 Restart 方法将返回失败原因。
示例
private void restartAfterUpdate()
{
AppRestartFailureReason restartError = AppInstance.Restart(restartArgsInput);
switch (restartError)
{
case AppRestartFailureReason.RestartPending:
SendToast("Another restart is currently pending.");
break;
case AppRestartFailureReason.InvalidUser:
SendToast("Current user is not signed in or not a valid user.");
break;
case AppRestartFailureReason.Other:
SendToast("Failure restarting.");
break;
}
}
若要查看重启示例,请访问 WindowsAppSDK-Samples 存储库。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈