From f04789619a240ec54c38156a772b849477ea6f10 Mon Sep 17 00:00:00 2001 From: RogueException Date: Tue, 3 May 2016 03:01:45 -0300 Subject: [PATCH] Fixed DiscordClient.Disconnect stalling --- src/Discord.Net/DiscordClient.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 58eeeae5f..7b3bb422d 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -1078,19 +1078,21 @@ namespace Discord const short batchSize = 50; ulong[] serverIds = new ulong[batchSize]; - while (true) + while (!cancelToken.IsCancellationRequested && State == ConnectionState.Connecting) + await Task.Delay(100).ConfigureAwait(false); + + while (!cancelToken.IsCancellationRequested && State == ConnectionState.Connected) { - if (!cancelToken.IsCancellationRequested && State == ConnectionState.Connected) + if (_largeServers.Count > 0) { int count = 0; - while (count < batchSize && _largeServers.TryDequeue(out serverIds[count])) count++; - if (count > 0 && !cancelToken.IsCancellationRequested) + if (count > 0) GatewaySocket.SendRequestMembers(serverIds.Take(count), "", 0); } - await Task.Delay(1250); + await Task.Delay(1250).ConfigureAwait(false); } } catch (OperationCanceledException) { }