gpt4 book ai didi

c# - 在 Windows Phone 应用程序中使用任务并行库会引发 ThreadAbortException

转载 作者:行者123 更新时间:2023-11-30 17:59:58 25 4
gpt4 key购买 nike

我在我的 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。据我了解,这是因为后台线程未正确结束。

我该如何防止这种情况发生?也许有某种正确的方法来取消任务?

我只有一个想法 - 捕获这个异常并假装什么都没发生。对吗?

最佳答案

当您点击后退按钮退出应用程序时,框架会等待一小段时间,然后中止所有正在进行的线程。正是中止导致了异常。

如果你想避免异常,你必须处理主页上的 BackKeyPress 事件(或其他检测后退的方法)并取消你的 Task 对象。当然,这意味着您需要跟踪取消标记。

关于c# - 在 Windows Phone 应用程序中使用任务并行库会引发 ThreadAbortException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com