重启 API
重启 API 允许任何应用(包括打包或解压缩的 Win32 应用)在命令上终止并重启自己,包括为重启的实例提供任意命令行字符串的功能。
定义
public static AppRestartFailureReason Restart(String arguments)
参数
arguments
: 字符串
要传递给重启实例的参数。
返回
重启 API 返回一个 AppRestartFailureReason
。
先决条件
若要在 Windows 应用 SDK 中使用应用生命周期 API,请执行以下操作:
- 下载并安装 Windows 应用 SDK 的最新版本。 有关详细信息,请参阅 WinUI 入门。
- 按照说明创建你的第一个 WinUI 3 项目,或者在现有项目中使用 Windows App SDK。
什么是重启方法?
对于 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 示例存储库。