Fixed Block()
This commit is contained in:
@@ -23,7 +23,7 @@ namespace Discord
|
||||
private readonly JsonSerializer _serializer;
|
||||
private readonly Regex _userRegex, _channelRegex;
|
||||
private readonly MatchEvaluator _userRegexEvaluator, _channelRegexEvaluator;
|
||||
private readonly object _disconnectEvent;
|
||||
private readonly ManualResetEvent _disconnectEvent;
|
||||
private readonly Random _rand;
|
||||
private readonly ConcurrentQueue<Message> _pendingMessages;
|
||||
private readonly DiscordClientConfig _config;
|
||||
@@ -56,7 +56,7 @@ namespace Discord
|
||||
/// <summary> Initializes a new instance of the DiscordClient class. </summary>
|
||||
public DiscordClient(DiscordClientConfig config = null)
|
||||
{
|
||||
_disconnectEvent = new object();
|
||||
_disconnectEvent = new ManualResetEvent(true);
|
||||
_config = config ?? new DiscordClientConfig();
|
||||
_isDebugMode = _config.EnableDebug;
|
||||
_rand = new Random();
|
||||
@@ -545,6 +545,7 @@ namespace Discord
|
||||
|
||||
private async Task Run()
|
||||
{
|
||||
_disconnectEvent.Reset();
|
||||
_disconnectToken = new CancellationTokenSource();
|
||||
|
||||
//Run Loops
|
||||
@@ -562,7 +563,7 @@ namespace Discord
|
||||
//TODO: What happens if a reconnect occurs and caches havent been cleared yet? Compare to DiscordWebSocket.Cleanup()
|
||||
private async Task Cleanup()
|
||||
{
|
||||
_isDisconnecting = true;
|
||||
_disconnectEvent.Set();
|
||||
|
||||
await _webSocket.DisconnectAsync().ConfigureAwait(false);
|
||||
#if !DNXCORE50
|
||||
@@ -582,7 +583,6 @@ namespace Discord
|
||||
_runTask = null;
|
||||
_isConnected = false;
|
||||
_isDisconnecting = false;
|
||||
Monitor.Pulse(_disconnectEvent);
|
||||
}
|
||||
|
||||
//Voice
|
||||
@@ -685,8 +685,8 @@ namespace Discord
|
||||
/// <summary> Blocking call that will not return until client has been stopped. This is mainly intended for use in console applications. </summary>
|
||||
public void Block()
|
||||
{
|
||||
while (_isConnected)
|
||||
Monitor.Wait(_disconnectEvent, TimeSpan.FromSeconds(3));
|
||||
}
|
||||
if (_isConnected)
|
||||
_disconnectEvent.WaitOne();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user