重启 API

重启 API 允许任何应用(包括打包或解压缩的 Win32 应用)在命令上终止并重启自己,包括为重启的实例提供任意命令行字符串的功能。

定义

public static AppRestartFailureReason Restart(String arguments)

参数

arguments字符串

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

返回

重启 API 返回一个 AppRestartFailureReason

先决条件

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

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