SuspendingEventHandler Делегат
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет метод, обрабатывающий событие Suspending .
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
Объект, к которому прикреплен обработчик.
Данные события.
- Атрибуты
Требования к 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 . Если приложение возобновляется до завершения работы, система автоматически восстанавливает состояние приложения. Событие возобновления следует обрабатывать только в том случае, если вам нужно обновить отображаемое содержимое, которое могло измениться во время приостановки приложения, например в новостных каналах или расположении пользователя.