Application.Suspending 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
發生于應用程式從某些其他狀態轉換為 Suspended 狀態時。
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
事件類型
範例
此程式碼範例示範此事件的一般使用模式。 許多 XAML 範例都會使用此程式碼作為 app.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 事件是您的應用程式在終止前將會收到的唯一指示, (如果發生) 。 因此,您應該將足夠的會話狀態儲存 (,例如正在讀取的目前文章或目前的電影播放位置) ,以在啟用期間重新建立完全相同的體驗。 內容建立應用程式的指導方針是提早儲存使用者的工作,但也會在暫停期間認可最後一個儲存。 在暫停之前儲存資料很有用,因為 Suspending 事件處理常式只有 5 秒才能完成其作業。
如果您的應用程式已終止,您可以在 OnLaunched 方法覆寫中還原應用程式狀態。 如果您的應用程式在終止之前繼續,系統會自動還原應用程式狀態。 只有在您需要重新整理應用程式暫停時可能已變更的任何顯示內容時,才應該處理 繼續 事件,例如新聞摘要或使用者的位置。
Suspending 事件會在註冊所在的相同 Apartment 中執行。