API перезапуска
API перезапуска позволяет любому приложению, включая упакованные или распакованные приложения Win32, завершать и перезапустить их в команде, включая возможность предоставления произвольной строки командной строки для перезапуска экземпляра.
Определение
public static AppRestartFailureReason Restart(String arguments)
Параметры
arguments
: строка
Аргументы для передачи в перезапуска экземпляр.
Возвраты
API перезапуска возвращает AppRestartFailureReason
значение .
Необходимые компоненты
Чтобы использовать API жизненного цикла приложения в пакете SDK для приложений Для Windows:
- Скачайте и установите последнюю версию пакета SDK для приложений Windows. Дополнительные сведения см. в статье "Начало работы с WinUI".
- Выполните инструкции по созданию простого проекта 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.
Windows developer