SuspendingEventHandler Делегат

Определение

public delegate void SuspendingEventHandler(Platform::Object ^ sender, SuspendingEventArgs ^ e);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
class SuspendingEventHandler : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
public delegate void SuspendingEventHandler(object sender, SuspendingEventArgs e);
Public Delegate Sub SuspendingEventHandler(sender As Object, e As SuspendingEventArgs)

Параметры

sender
Object

Platform::Object

IInspectable

Объект, к которому прикреплен обработчик.

e
SuspendingEventArgs

Данные события.

Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

В этом примере кода показан типичный шаблон использования этого события. Этот код используется во многих примерах XAML, например в примере входных данных, как часть кода программной части для файла app.xaml. При просмотре примеров XAML можно найти исходный код ДЛЯ SuspensionManager API класса, как указано в этом коде.

async protected void OnSuspending(object sender, SuspendingEventArgs args)
{
    SuspendingDeferral deferral = args.SuspendingOperation.GetDeferral();
    await SuspensionManager.SaveAsync();
    deferral.Complete();
}
Private Async Sub OnSuspending(sender As Object, args As SuspendingEventArgs) 
    Dim deferral As SuspendingDeferral = args.SuspendingOperation.GetDeferral 
    Await SuspensionManager.SaveAsync 
    deferral.Complete() 
End Sub 

Комментарии

Система приостанавливает работу приложения всякий раз, когда пользователь переключается на другое приложение или на рабочий стол, и возобновляет работу приложения всякий раз, когда пользователь вернется к нему. Однако система также может завершить работу приложения, пока оно приостановлено, чтобы освободить ресурсы. Поэтому следует обработать событие Suspending для выполнения следующих операций:

  • Сохранение состояния сеанса пользователя.
  • Сними все монопольные блокировки ресурсов.
  • По возможности сократите использование памяти. Например, сериализуйте любые данные, которые легко восстановить в объектной форме после повторной активации.
  • Сохраните состояние приложения. Событие Suspending является единственным признаком того, что ваше приложение получит до завершения работы (если это произойдет). По этой причине необходимо сохранить достаточное состояние сеанса (например, текущую статью или текущую позицию воспроизведения фильма), чтобы воссоздать то же самое взаимодействие во время активации. Для приложений для создания содержимого рекомендуется сохранять работу пользователя на ранних этапах и часто, а также фиксировать одно окончательное сохранение во время приостановки. Сохранение данных до приостановки полезно, так как у обработчика событий Suspending есть всего 5 секунд для завершения операции.

Если приложение завершено, вы можете восстановить состояние приложения в переопределении метода OnLaunched . Если приложение возобновляется до завершения работы, система автоматически восстанавливает состояние приложения. Событие возобновления следует обрабатывать только в том случае, если вам нужно обновить отображаемое содержимое, которое могло измениться во время приостановки приложения, например в новостных каналах или расположении пользователя.

Применяется к