gpt4 book ai didi

c# - 多线程异常冒泡

转载 作者:太空狗 更新时间:2023-10-30 01:19:21 25 4
gpt4 key购买 nike

我有一个处理事件回调的应用程序,在我的例子中它是 SerialPort 上的 DataReceived 事件。在那个回调中,我有需要在另一个线程上引发异常的业务逻辑。该线程正在等待事件监听器向它发送消息,或者让它知道发生了异常。

跨线程保留堆栈跟踪的最佳方法是什么?

简单地将线程传递给工作线程并重新抛出它,会导致堆栈跟踪丢失。

最佳答案

  • 这取决于您的方法,例如 TPL:throw-->聚合异常。
  • BackGroundWorker--> 你必须注意结果中的错误。
  • 线程 --> 您必须将错误编码到主线程。
  • 任务--> 抛出--> AggregateException。
  • Async/await--> 也抛出 AggregateException(我不确定)。

任务方法提供了一个延续来处理由先行和良好的错误处理抛出的异常。

Async/await 非常灵活。

BackGroundWroker 是遗留的,但有时仍然需要。

带有回调的异步编程(在您的情况下也是遗留的)但可以使用;我建议您使用任务。

AggregateException:表示应用程序执行期间发生的一个或多个错误。您将在根 AggregateException 中获得异常列表(来自其他线程)

关于c# - 多线程异常冒泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23293538/

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