2016-05-10 16 views
0

私はWindowsストアに公開されているWindows 8.1/windows phone 8.1(WinRT)アプリケーションを持っています。アプリは​​イベントハンドラを使用して重要なアプリの状態と統計をファイルのセットに保存します(理由のために組み込みの設定APIは使用しません)。 「良い男の子」になるために、私はWindows.ApplicationModel.SuspendingOperation.Deadlineに従い、Windows.ApplicationModel.SuspendingOperation.GetDeferral()を可能な限り明示的に呼びます。Windows Phone 8.1(WinRT)およびWindows Phone 10(UWP)アプリケーションの一時停止手順

ここでの質問は以下のとおりです。

  1. は、私は右の私が締め切りの瞬間の前にWindows.ApplicationModel.SuspendingDeferral.Complete()メソッドを呼び出す必要があること、それを得るのですか?

  2. 締め切り前に電話することができない場合は、罰則はありますか?私のアプリは、システムの目を見張るような視点から「無反応」になっていますか?

  3. Windows.ApplicationModel.SuspendingDeferral.Complete()が呼び出された瞬間にまだ実行中のスレッドはどうなりますか?彼らは凍っているのだろうか?

  4. 「async」スレッド、つまり暗黙のTPLスレッドまたはThreadPool.RunAsyncとUIスレッドがアプリケーションの中断中に動作に違いはありますか?

  5. Windows.ApplicationModel.SuspendingDeferral.Complete()を呼び出す前に、すべての非同期タスク、つまりSystem.Threading.Tasks.Taskインスタンスを明示的にキャンセルする必要がありますか?

答えて

1

これは、RTアプリのライフサイクルについての非常に良い記事です:What You Need To Know About Suspend and Resume in WinRTです。

SuspendingOperation.Deadlineが期限切れになる前にCompleteメソッドを呼び出さないと、タイムアウトが発生し、Windowsはあなたのアプリに何か悪いことが起こったと推測し、中断されるのではなく終了します。

あなたは仕事を終え、Dedlineの前にCompleteを呼び出す必要があります。

+0

いい記事をありがとう。それは私のアプリケーションは、延期を取得し、締め切り前に完全なメソッドを呼び出さない場合は終了するつもりだが、締め切り前に私の仕事を終了することについて何も言わない。それは、私の既存のスレッドは、サスペンド時には終了せずに凍結するつもりであると言います。 「締め切り前に仕事を終わらせなければ、あなたのアプリは終了する」とはどういう意味ですか? –

+0

締め切りになると、スレッドが停止して固定されます。 – crea7or

+0

もう一度、「締め切り前に仕事を終えて、あなたのアプリは終了する」と言ってどういう意味ですか? –

関連する問題