gpt4 book ai didi

c# - 在没有 Wait() 的情况下使用 TPL 处理异常

转载 作者:可可西里 更新时间:2023-11-01 08:33:40 24 4
gpt4 key购买 nike

我有一个带有“开始”和“停止”按钮的应用程序,以及一个在按下“开始”后在后台运行的线程。我为此使用 MVC 和 TPL。

我从不调用 Wait() 方法,如何处理 TPL 中的异常?在任何异常情况下,我都需要显示错误消息框,并且该框应该在它被立即抛出后显示。

我一直在后台运行单线程,所以你不能在没有事先停止线程的情况下按开始。

我正在寻找一些好的模式或最佳实践。我有一个想法将 try..catch 放在线程中,并在每次捕获时调用一个事件,但我不确定这种方法是否是好的架构决策

最佳答案

如果您正在使用 Tasks,您可以添加一个仅在抛出异常时才运行的延续。您还可以让它在您的 UI 线程上运行,以便您可以使用您的 UI 控件:

task.ContinueWith(
t => { var x = t.Exception; ...handle exception... },
CancellationToken.None,
TaskContinuationOptions.OnlyOnFaulted,
TaskScheduler.FromCurrentSynchronizationContext()
);

关于c# - 在没有 Wait() 的情况下使用 TPL 处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714235/

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