重新啟動 API
重新啟動 API 使任何應用程式 (包括打包或未打包的 Win32 應用程式) 能夠根據命令自行終止和重新啟動,包括為重新啟動的執行個體提供任意命令列字串的能力。
定義
public static AppRestartFailureReason Restart(String arguments)
參數
arguments
: 字串
要傳遞給重新啟動的執行個體的參數。
傳回
重新啟動 API 會傳回 AppRestartFailureReason
。
必要條件
若要在 Windows 應用程式 SDK 中使用應用程式生命週期 API:
- 下載並安裝最新版的 Windows 應用程式 SDK。 如需詳細資訊,請參閱 開始使用 WinUI。
- 請遵循指示來建立您的第一個 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 存放庫。