diff --git a/src/TwitchLib.Communication/Clients/ClientBase.cs b/src/TwitchLib.Communication/Clients/ClientBase.cs index 0dfc91f..46996ab 100644 --- a/src/TwitchLib.Communication/Clients/ClientBase.cs +++ b/src/TwitchLib.Communication/Clients/ClientBase.cs @@ -252,8 +252,17 @@ private async Task OpenPrivateAsync(bool isReconnect) await Task.Delay(Options.ReconnectionPolicy.GetReconnectInterval(), CancellationToken.None); } - await ConnectClientAsync(); - Options.ReconnectionPolicy.ProcessValues(); + try + { + await ConnectClientAsync(); + Options.ReconnectionPolicy.ProcessValues(); + } + catch (ObjectDisposedException) + { + Logger?.TraceAction(GetType(), "object disposed. Recreating."); + Client = CreateClient(); + } + first = false; } diff --git a/src/TwitchLib.Communication/Clients/WebsocketClient.cs b/src/TwitchLib.Communication/Clients/WebsocketClient.cs index 516175e..3d54f8c 100644 --- a/src/TwitchLib.Communication/Clients/WebsocketClient.cs +++ b/src/TwitchLib.Communication/Clients/WebsocketClient.cs @@ -189,6 +189,10 @@ protected override async Task ConnectClientAsync() // occurs if the Tasks are canceled by the CancellationTokenSource.Token Logger?.LogExceptionAsInformation(GetType(), ex); } + catch (ObjectDisposedException) + { + throw; + } catch (Exception ex) { Logger?.LogExceptionAsError(GetType(), ex);