2016-06-15 3 views
0

BackgroundTaskDeferral.Completeは、アプリケーションがデバッグで実行されているときに正常に動作し、アプリケーションが中断してもOnCompleteイベントをキャッチできます。UWPアプリケーションでデバッグせずにアプリケーションを実行すると、BackgroundTaskDeferral.Completeが機能しません。

しかし、アプリケーションがデバッグせずに実行され、アプリがバックグラウンドになると、BackgroundTaskDeferral.Completeは機能しません。メインプロジェクト、私はあなたが修正理解している場合は何時にバックグラウンドタスクの呼び出し(私はトースト通知が表示されますonCompleteのメインプロジェクトキャッチイベント)

BackgroundTaskDeferral _deferral = taskInstance.GetDeferral(); 
_deferral.Complete(); 

答えて

1

を受信できない、問題はあなたの主なプロジェクトが通知されないということですone バックグラウンドタスクが完了しました。それは正常です - メインプロジェクトis being suspended by the OS, shortly after your app goes to background

デバッグ中に動作するため、PLMは無効になり、suspending/resuming events are not being raisedとなります。

バックグラウンドでいくつかのジョブを実行したい場合は、バックグラウンドタスク内に配置してください。トースト通知は正常に動作するはずです。

+0

バックグラウンドタスクは、アプリケーションが閉じられたときにメインプロジェクトの関数にコールバックできません。バックグラウンドタスクはフォアグラウンドでアプリケーションを実行しても機能しますか? – ThangBM

+0

@ThangBM Deferal.Completeは、バックグラウンドタスクで非同期メソッドを処理するために使用されます。非同期メソッドが他のスレッドで実行されている場合、遅延なしでRunメソッドは終了し、OSはタスクを終了します。延期を取得したら、システムは何か他のことが起こっていることを知っています。完了すると、OSにリソースを解放できるというサインを与えます。 – Romasz

+0

ありがとうございます。アプリが閉鎖している場合、バックグラウンドタスクで通知トリガーを受け取ったときに、メインプロジェクトでデータベースにクエリを行いたいのですが、どうすればいいですか? – ThangBM

関連する問題