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();
}