在 C# 中出现异常时重新启动线程 [重复]

Posted

技术标签:

【中文标题】在 C# 中出现异常时重新启动线程 [重复]【英文标题】:Restart Thread on Exception in C# [duplicate] 【发布时间】:2021-11-04 21:23:51 【问题描述】:

我有一个调用第三方 API 的普通 C# 线程(它在内部进行网络 API 调用),最近我观察到有时第三方 API 会引发 WebTimeOut 异常。我调用 API 的线程不是连续运行的,它只在需要时调用(我不能也不希望从主线程调用第三方 API)。

使用该 API 的该线程正在取消订单,即使第三方 API 失败一次/两次,我也必须重试。我如何确保即使线程有异常(例如调用抛出 WebTimeOut 异常的第三方 API 时),它正在重试或重新启动自身?

【问题讨论】:

你应该使用 Polly github.com/App-vNext/Polly .NET Framework 或 .NET Core/.NET5 ? 【参考方案1】:

为什么不在线程内使用 try-catch 语句。 当抛出异常时,该异常将在该 catch 语句中处理。然后你可以尝试再次请求网络api。

try

    // Network API Call

catch (WebTimeOutException e)

    //...

catch (Exception e)

    //...

【讨论】:

以上是关于在 C# 中出现异常时重新启动线程 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C# - 线程中止异常(Thread Abort Exception)重新抛出自身

您可以在不同的线程上重新引发 .NET 异常吗?

这个问题是关于C#线程内部操作datagridview 使数据重新加载实现向上跑动!!!

何时在 C# 中重新引发异常?

无法重新启动线程[重复]

JAVA 线程池 其中一个线程执行失败 则线程重新执行或者重新提交任务 急