次の方法で共有


Restart API

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

Definition

public static AppRestartFailureReason Restart(String arguments)

パラメーター

arguments: String

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

返品

Restart API は、 AppRestartFailureReasonを返します。

前提条件

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

  1. Windows App SDK の最新リリースをダウンロードしてインストールします。 詳細については、「 Get started with WinUI」を参照してください。
  2. 手順に従って、最初の WinUI 3 プロジェクトを作成するか、既存のプロジェクトで Windows App SDK を使用します

この Restart メソッドとは

Win32 アプリの場合、可能な限り次の再起動メカニズムが存在します。

  • Win32 API RegisterApplicationRestart を使用すると、アプリは終了後に自身を登録して再起動し、再起動されたインスタンスに任意のコマンドライン文字列を指定できます。 終了の理由には、アプリのクラッシュやハング、アプリの更新、システムの更新などがあります。

ただし、次のシナリオではギャップが存在します。

  • Win32 アプリは OS に登録して特定のアプリ/OS 状態で再起動できますが、 正常な状態から再起動を開始することはできません

この Restart 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 リポジトリを参照してください。