Switched GetTasks to IEnumerable<Task>

This commit is contained in:
RogueException
2015-10-12 23:09:26 -03:00
parent e808507558
commit 54fe30a59a
5 changed files with 15 additions and 11 deletions

View File

@@ -1,6 +1,8 @@
using Discord.Helpers; using Discord.Helpers;
using Discord.WebSockets.Data; using Discord.WebSockets.Data;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.ExceptionServices; using System.Runtime.ExceptionServices;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -210,7 +212,7 @@ namespace Discord
private async Task RunTasks() private async Task RunTasks()
{ {
Task[] tasks = GetTasks(); Task[] tasks = GetTasks().ToArray();
Task firstTask = Task.WhenAny(tasks); Task firstTask = Task.WhenAny(tasks);
Task allTasks = Task.WhenAll(tasks); Task allTasks = Task.WhenAll(tasks);
@@ -239,7 +241,7 @@ namespace Discord
_connectedEvent.Reset(); _connectedEvent.Reset();
_runTask = null; _runTask = null;
} }
protected virtual Task[] GetTasks() protected virtual IEnumerable<Task> GetTasks()
{ {
return new Task[] { _cancelToken.Wait() }; return new Task[] { _cancelToken.Wait() };
} }

View File

@@ -108,7 +108,7 @@ namespace Discord.WebSockets.Voice
catch (OperationCanceledException) { } catch (OperationCanceledException) { }
} }
protected override Task[] GetTasks() protected override IEnumerable<Task> GetTasks()
{ {
_isClearing = false; _isClearing = false;

View File

@@ -2,6 +2,7 @@
using Discord.Helpers; using Discord.Helpers;
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Net.WebSockets; using System.Net.WebSockets;
using System.Text; using System.Text;
@@ -50,7 +51,7 @@ namespace Discord.WebSockets
return TaskHelper.CompletedTask; return TaskHelper.CompletedTask;
} }
public Task[] GetTasks(CancellationToken cancelToken) public IEnumerable<Task> GetTasks(CancellationToken cancelToken)
{ {
return new Task[] return new Task[]
{ {

View File

@@ -2,6 +2,7 @@
using Discord.Helpers; using Discord.Helpers;
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using WSSharpNWebSocket = WebSocketSharp.WebSocket; using WSSharpNWebSocket = WebSocketSharp.WebSocket;
@@ -68,7 +69,7 @@ namespace Discord.WebSockets
return TaskHelper.CompletedTask; return TaskHelper.CompletedTask;
} }
public Task[] GetTasks(CancellationToken cancelToken) public IEnumerable<Task> GetTasks(CancellationToken cancelToken)
{ {
return new Task[] return new Task[]
{ {

View File

@@ -1,6 +1,7 @@
using Discord.Helpers; using Discord.Helpers;
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.ExceptionServices; using System.Runtime.ExceptionServices;
using System.Text; using System.Text;
@@ -29,7 +30,7 @@ namespace Discord.WebSockets
Task Connect(string host, CancellationToken cancelToken); Task Connect(string host, CancellationToken cancelToken);
Task Disconnect(); Task Disconnect();
void QueueMessage(string message); void QueueMessage(string message);
Task[] GetTasks(CancellationToken cancelToken); IEnumerable<Task> GetTasks(CancellationToken cancelToken);
} }
internal abstract partial class WebSocket internal abstract partial class WebSocket
@@ -162,7 +163,7 @@ namespace Discord.WebSockets
protected virtual async Task RunTasks() protected virtual async Task RunTasks()
{ {
Task[] tasks = GetTasks(); Task[] tasks = GetTasks().ToArray();
Task firstTask = Task.WhenAny(tasks); Task firstTask = Task.WhenAny(tasks);
Task allTasks = Task.WhenAll(tasks); Task allTasks = Task.WhenAll(tasks);
@@ -180,12 +181,11 @@ namespace Discord.WebSockets
//Start cleanup //Start cleanup
await Cleanup().ConfigureAwait(false); await Cleanup().ConfigureAwait(false);
} }
protected virtual Task[] GetTasks() protected virtual IEnumerable<Task> GetTasks()
{ {
var cancelToken = _cancelToken; var cancelToken = _cancelToken;
return _engine.GetTasks(cancelToken) return _engine.GetTasks(cancelToken)
.Concat(new Task[] { HeartbeatAsync(cancelToken) }) .Concat(new Task[] { HeartbeatAsync(cancelToken) });
.ToArray();
} }
protected virtual async Task Cleanup() protected virtual async Task Cleanup()
{ {