在 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)重新抛出自身