diff --git a/src/Discord.Net/DiscordSimpleClient.cs b/src/Discord.Net/DiscordSimpleClient.cs index 386832e68..3ff217595 100644 --- a/src/Discord.Net/DiscordSimpleClient.cs +++ b/src/Discord.Net/DiscordSimpleClient.cs @@ -200,7 +200,7 @@ namespace Discord private async Task RunTasks() { - Task[] tasks = Run(); + Task[] tasks = GetTasks(); Task firstTask = Task.WhenAny(tasks); Task allTasks = Task.WhenAll(tasks); @@ -229,7 +229,7 @@ namespace Discord _connectedEvent.Reset(); _runTask = null; } - protected virtual Task[] Run() + protected virtual Task[] GetTasks() { return new Task[] { _cancelToken.Wait() }; } @@ -247,7 +247,13 @@ namespace Discord //Helpers /// Blocking call that will not return until client has been stopped. This is mainly intended for use in console applications. - public void Block() + public void Run(Func asyncAction) + { + asyncAction().Wait(); + _disconnectedEvent.WaitOne(); + } + /// Blocking call that will not return until client has been stopped. This is mainly intended for use in console applications. + public void Run() { _disconnectedEvent.WaitOne(); } diff --git a/src/Discord.Net/WebSockets/Voice/VoiceWebSocket.cs b/src/Discord.Net/WebSockets/Voice/VoiceWebSocket.cs index beef201c8..332f6afd9 100644 --- a/src/Discord.Net/WebSockets/Voice/VoiceWebSocket.cs +++ b/src/Discord.Net/WebSockets/Voice/VoiceWebSocket.cs @@ -106,7 +106,7 @@ namespace Discord.WebSockets.Voice catch (OperationCanceledException) { } } - protected override Task[] Run() + protected override Task[] GetTasks() { _isClearing = false; @@ -145,7 +145,7 @@ namespace Discord.WebSockets.Voice #if !DNXCORE50 tasks.Add(WatcherAsync()); #endif - tasks.AddRange(base.Run()); + tasks.AddRange(base.GetTasks()); return tasks.ToArray(); } diff --git a/src/Discord.Net/WebSockets/WebSocket.BuiltIn.cs b/src/Discord.Net/WebSockets/WebSocket.BuiltIn.cs index b2b899886..d177c9333 100644 --- a/src/Discord.Net/WebSockets/WebSocket.BuiltIn.cs +++ b/src/Discord.Net/WebSockets/WebSocket.BuiltIn.cs @@ -49,7 +49,7 @@ namespace Discord.WebSockets return TaskHelper.CompletedTask; } - public Task[] RunTasks(CancellationToken cancelToken) + public Task[] GetTasks(CancellationToken cancelToken) { return new Task[] { diff --git a/src/Discord.Net/WebSockets/WebSocket.cs b/src/Discord.Net/WebSockets/WebSocket.cs index a50a07433..3d64e9263 100644 --- a/src/Discord.Net/WebSockets/WebSocket.cs +++ b/src/Discord.Net/WebSockets/WebSocket.cs @@ -29,7 +29,7 @@ namespace Discord.WebSockets Task Connect(string host, CancellationToken cancelToken); Task Disconnect(); void QueueMessage(byte[] message); - Task[] RunTasks(CancellationToken cancelToken); + Task[] GetTasks(CancellationToken cancelToken); } internal abstract partial class WebSocket @@ -147,7 +147,7 @@ namespace Discord.WebSockets protected virtual async Task RunTasks() { - Task[] tasks = Run(); + Task[] tasks = GetTasks(); Task firstTask = Task.WhenAny(tasks); Task allTasks = Task.WhenAll(tasks); @@ -165,10 +165,10 @@ namespace Discord.WebSockets //Start cleanup await Cleanup().ConfigureAwait(false); } - protected virtual Task[] Run() + protected virtual Task[] GetTasks() { var cancelToken = _cancelToken; - return _engine.RunTasks(cancelToken) + return _engine.GetTasks(cancelToken) .Concat(new Task[] { HeartbeatAsync(cancelToken) }) .ToArray(); }