重启 API

重启 API 使任何应用(包括打包的或未打包的 Win32 应用)能够在命令上终止并重启自身,包括为重启的实例提供任意命令行字符串的功能。

定义

public static AppRestartFailureReason Restart(String arguments)

parameters

arguments字符串

要传递给重启实例的参数。

返回

重启 API 返回 AppRestartFailureReason

先决条件

若要在 Windows 应用 SDK 中使用应用生命周期 API,请执行以下操作:

  1. 下载并安装 Windows 应用 SDK 的最新版本。 有关详细信息,请参阅安装适用于 Windows 应用 SDK 的工具
  2. 按照说明创建你的第一个 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 存储库