Поделиться через


API перезапуска

API перезапуска позволяет любому приложению, включая упакованные или распакованные приложения Win32, завершать и перезапустить их в команде, включая возможность предоставления произвольной строки командной строки для перезапуска экземпляра.

Определение

public static AppRestartFailureReason Restart(String arguments)

Параметры

arguments: строка

Аргументы для передачи в перезапуска экземпляр.

Возвраты

API перезапуска возвращает AppRestartFailureReasonзначение .

Необходимые компоненты

Чтобы использовать API жизненного цикла приложения в пакете SDK для приложений Для Windows:

  1. Скачайте и установите последнюю версию пакета SDK для приложений Windows. Дополнительные сведения см. в статье "Начало работы с WinUI".
  2. Выполните инструкции по созданию простого проекта WinUI 3 или применению пакета SDK для приложений Windows в существующем проекте.

Что такое метод перезапуска?

Для приложений Win32 существуют следующие механизмы перезапуска:

  • API Win32 RegisterApplicationRestart позволяет приложению зарегистрировать себя после завершения и предоставить произвольную строку командной строки для перезапуска экземпляра. Причины прекращения включают сбой приложения или зависание, обновление приложения или обновление системы.

Однако для следующего сценария существует разрыв:

  • Приложения Win32 могут регистрироваться в ОС для перезапуска в определенных состояниях приложения или ОС, но не могут инициировать перезапуск из работоспособного состояния.

Этот API перезапуска позволяет приложениям Win32 завершать и перезапускать команды, а также выравнивать существующие CoreApplication.RequestRestartAsync.

Перезапуск с помощью аргументов командной строки

Просто вызовите метод перезапуска и укажите произвольную строку командной строки для перезапуска экземпляра, с которым необходимо перезапустить. Перезапуск выполняется синхронно, а дальнейшие действия или обработка не требуются. Если перезапуск завершается сбоем по какой-то причине, метод перезапуска возвращает причину сбоя.

Примеры

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.