WinRTを使用したWindows Phone 8.1でのイベントの中断に問題がありますが、イベントが起動しません。理由はわかりません。これは私のコードです:
_/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
InitializeComponent();
Suspending += OnSuspending;
#if DEBUG
this.displayRequest = new DisplayRequest();
#endif
}
/// <summary>
/// Invoked when application execution is being suspended. Application state is saved
/// without knowing whether the application will be terminated or resumed with the contents
/// of memory still intact.
/// </summary>
/// <param name="sender">
/// The source of the suspend request.
/// </param>
/// <param name="e">
/// Details about the suspend request.
/// </param>
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
deferral.Complete();
}
_
行var deferral = e.SuspendingOperation.GetDeferral();
にブレークポイントを設定し、Visual Studioでデバッグしました。次に、電話のスタートボタンを押して別のアプリを実行し、約10秒間待機しました。 OnSuspending
が実行されていません。
何か案は?
デバッグ中は一時停止イベントは発生しません(ただし、通常のアプリの実行中は、アプリから移動した直後に発生します) this blog :
...アプリが画面に切り替えられても、これらがトリガーされるまで永遠に待機します。その理由は簡単です。アプリがデバッグされている間、Windowsはそれを中断しません。
これは、Suspendingイベントに問題がある場合、たとえば、Frame.Navigateメソッドを使用し、SuspensionManagerを使用します。アプリのデバッグ中は問題なく動作しますが(中断なし)、デバッグモードなしではクラッシュします。
アプリの動作をテストするには、invokeSuspendingを呼び出す必要がありますmanuallt、開く(または表示設定)デバッグ場所ツールバーをVisual Studioに表示すると、Lifecyceイベントのドロップダウンが表示され、そこから選択します Suspend、次にアプリを返すには- Resume。