我在我的 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。据我所知,这是因为背景线程错误地结束了。
我怎样才能防止这种情况?也许有某种正确的方法来取消任务?
我只有一个想法——抓住这个异常并假装什么都没发生。这样对吗?