Restart API

再起動 API を使用すると、パッケージ化された Win32 アプリやパッケージ化されていない Win32 アプリを含むすべてのアプリが、再起動されたインスタンスに任意のコマンドライン文字列を提供する機能を含め、コマンドで自身を終了および再起動できます。

定義

public static AppRestartFailureReason Restart(String arguments)

パラメーター

arguments: String

再起動されたインスタンスに渡す引数。

戻り値

Restart API は を AppRestartFailureReason返します。

前提条件

Windows App SDK でアプリ ライフサイクル API を使用するには、次のようにします。

  1. Windows App SDK の最新リリースをダウンロードしてインストールします。 詳細については、「Windows App SDK 用ツールをインストールする」を参照してください。
  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-Samples リポジトリにアクセスしてください