バックグラウンド操作のためにwp7アプリでTPLを使用しています。
アプリがタスクを開始します。
var task =
Task.Factory.StartNew(
() =>
{
// Some sort of operations
});
この後、アプリは UI の更新を実行します。
task.ContinueWith(
obj =>
{
// UI updates
},
new CancelationSource.Token,
TaskContinuationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext());
しかし問題がある。戻るボタンを押してアプリを閉じると、タスクがまだ終了していない場合、アプリは内部 ThreadAbortException で AggregateException をスローします。私が理解できるように、これはバックグラウンド スレッドが正しく終了しなかったためです。
どうすればこれを防ぐことができますか? たぶん、タスクをキャンセルする正しい方法がいくつかありますか?
私には 1 つのアイデアしかありません。この例外をキャッチして、何も起こらなかったふりをすることです。そうですか?