using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; namespace MonoTests { public class TestScheduler : TaskScheduler { readonly ConcurrentQueue queue = new ConcurrentQueue (); protected override void QueueTask (Task task) { queue.Enqueue (task); } protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued) { queue.Enqueue (task); return false; } protected override IEnumerable GetScheduledTasks () { return queue; } public int ExecuteAll () { int i = 0; Task task; while (queue.TryDequeue (out task)) { TryExecuteTask (task); i++; } return i; } } }