Share via


重新啟動 API

重新啟動 API 使任何應用程式 (包括打包或未打包的 Win32 應用程式) 能夠根據命令自行終止和重新啟動,包括為重新啟動的執行個體提供任意命令列字串的能力。

定義

public static AppRestartFailureReason Restart(String arguments)

參數

arguments: 字串

要傳遞給重新啟動的執行個體的參數。

傳回

重新啟動 API 會傳回 AppRestartFailureReason

必要條件

若要在 Windows 應用程式 SDK 中使用應用程式生命週期 API:

  1. 下載並安裝最新版的 Windows 應用程式 SDK。 如需詳細資訊,請參閱安裝 Windows 應用程式 SDK 工具
  2. 請遵循指示來建立您的第一個 WinUI 3 專案,或使用現有專案中的 Windows 應用程式 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-Samples 存放庫