Windows 8 動手實驗教程 實驗5:進程生命週期管理

來源:互聯網
上載者:User

動手實驗

實驗5:進程生命週期管理

2012年9月

簡介

進程生命週期管理對構建Windows市集應用的開發人員來說是需要理解的最重要的概念之一。不同於傳統的Windows應用(它們即使在後台仍然繼續執行),Windows市集應用僅在前台時執行。通常不可見的應用程式被作業系統掛起並且不能被執行直到作業系統將它恢複到前台。

當應用程式被掛起,它仍然在記憶體中,同時它的所有線程被掛起。只要進程仍然在記憶體中,當應用程式回到前台時,它將從停止的地方繼續執行。要做到這一點開發人員不需要做任何工作。然而您不能被保證進程一直在記憶體中。如果當應用程式被掛起時,Windows核心決定需要掛起應用程式所使用的記憶體,Windows可以終止掛起的應用程式。當應用程式被終止時,所有未儲存的狀態將被丟失。除非您採取步驟以保持狀態,否則當使用者返回應用程式並發現所有已完成的工作被丟失時將會非常吃驚。

顯然我們不會允許它發生。當應用程式被掛起時,即使Windows也不知道應用程式是否最終將被終止。您應當假定應用程式將被終止,因此您必須編寫代碼以在它被掛起時儲存應用程式的狀態。然後如果您檢測到應用程式被掛起時有一個終止發生,您可以在重新啟用時恢複狀態。

聽起來很麻煩?有時是,但是對大多數應用程式來說不是,並且這是您編寫優秀應用程式必須做的工作。不做上述工作的潛在代價是僅僅切換到另一個應用程式就會丟失他或她在您應用程式中所做的所有工作。

目標

本實驗將向您介紹進程生命週期管理並向您展示Visual Studio在預設模版中為您編寫的一些代碼。因為Contoso食譜是一個簡單的應用程式,所以我們不需要編寫新的代碼來處理進程生命週期管理,Visual Studio注入的代碼已經足夠。您可能必須為自己的應用程式編寫更多的代碼,因此我們將告訴您代碼的位置以及您可以使用哪些應用程式介面(API)。停止打字並坐下來休息一下,但是請務必集中注意力。

系統要求

您需要下列軟體完成本實驗:

Microsoft Windows 8

Microsoft Visual Studio 2012

設定

您必須執行以下步驟來準備本實驗的電腦:

1.安裝Microsoft Windows 8。

2.安裝Microsoft Visual Studio 2012。

練習

本動手實驗包含以下練習:

1.導航狀態已經被儲存

2.提示

練習1:導航狀態已經被儲存

因為在Contoso Cookbook中唯一需要儲存的狀態是導航狀態(即使用者查看的項或組以及導航曆史),您不需要為處理進程生命週期管理做任何工作。Visual Studio在您的應用程式中包含一個名稱為SuspensionManager的類,它位於項目Common檔案夾的SuspensionManager.cs中。Visual Studio同時在App.xaml.cs中的App建構函式中包含一行代碼,它為Suspending事件註冊了一個事件處理常式。如此處所示,處理常式OnSuspending調用SuspensionManager.SaveAsync以儲存應用程式的導航狀態。

private async void OnSuspending(object sender, SuspendingEventArgs e)

{

   var deferral = e.SuspendingOperation.GetDeferral();

   await SuspensionManager.SaveAsync();

   deferral.Complete();

}

Visual Studio在App.xaml.cs檔案的OnLaunched事件中包含一個if子句,它的作用是如果應用程式在被掛起後被作業系統終止,則恢複應用程式的導航狀態。

if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)

{

   // Restore the saved session state only when appropriate

   await SuspensionManager.RestoreAsync();

}

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.