Application.Suspending イベント

定義

アプリケーションが他の状態から中断状態に切り替わるときに発生します。

public:
 virtual event SuspendingEventHandler ^ Suspending;
// Register
event_token Suspending(SuspendingEventHandler const& handler) const;

// Revoke with event_token
void Suspending(event_token const* cookie) const;

// Revoke with event_revoker
Application::Suspending_revoker Suspending(auto_revoke_t, SuspendingEventHandler const& handler) const;
public event SuspendingEventHandler Suspending;
function onSuspending(eventArgs) { /* Your code */ }
application.addEventListener("suspending", onSuspending);
application.removeEventListener("suspending", onSuspending);
- or -
application.onsuspending = onSuspending;
Public Custom Event Suspending As SuspendingEventHandler 

イベントの種類

このコード例では、このイベントの一般的な使用パターンを示します。 このコードは、app.xaml ファイルの分離コードの一部として、多くの XAML サンプルで使用されます。 XAML サンプルを参照すると、このコードで参照されているクラス API の SuspensionManager ソース コードを見つけることができます。

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 イベントは、アプリが終了前に受信する唯一の兆候です (発生した場合)。 このため、アクティブ化中にまったく同じエクスペリエンスを再作成するのに十分なセッション状態 (現在の記事の読み取りや現在のムービーの再生位置など) を格納する必要があります。 コンテンツ作成アプリのガイダンスは、ユーザーの作業を早期かつ頻繁に保存するだけでなく、中断中に最終的な保存を 1 回コミットする方法です。 中断前にデータを保存すると便利です。Suspending イベント ハンドラーの操作を完了するのに 5 秒しかかからないためです。

アプリが終了した場合は、 OnLaunched メソッドのオーバーライドでアプリの状態を復元できます。 アプリが終了する前にアプリが再開されると、システムはアプリの状態を自動的に復元します。 再開イベントは、ニュース フィードやユーザーの場所など、アプリの中断中に変更された可能性のある表示コンテンツを更新する必要がある場合にのみ処理する必要があります。

Suspending イベントは、登録されたのと同じアパートメントで実行されます。

適用対象

こちらもご覧ください