From 81b274fa99b95f1129e931fcf5991d0dfd9c7f81 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 22 Apr 2021 14:26:36 -0600 Subject: [PATCH] #94 adds null check in timer callback and stops timer on user disconnect call --- .../Comm/GenericTcpIpClient.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs index f151b57..90314bd 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs @@ -284,9 +284,17 @@ namespace PepperDash.Core /// public void Disconnect() { + DisconnectCalledByUser = true; + + // Stop trying reconnects, if we are + if (RetryTimer != null) + { + RetryTimer.Stop(); + RetryTimer = null; + } + if (Client != null) { - DisconnectCalledByUser = true; DisconnectClient(); Client = null; Debug.Console(1, this, "Disconnected"); @@ -329,7 +337,15 @@ namespace PepperDash.Core Debug.Console(1, this, "Attempting reconnect, status={0}", Client.ClientStatus); if (!DisconnectCalledByUser) - RetryTimer = new CTimer(o => { Client.ConnectToServerAsync(ConnectToServerCallback); }, AutoReconnectIntervalMs); + RetryTimer = new CTimer(o => + { + if (Client == null) + { + return; + } + + Client.ConnectToServerAsync(ConnectToServerCallback); + }, AutoReconnectIntervalMs); } }