36 lines
715 B
C#
36 lines
715 B
C#
|
using System.Collections.Concurrent;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace MonoTests {
|
|||
|
public class TestScheduler : TaskScheduler {
|
|||
|
readonly ConcurrentQueue<Task> queue = new ConcurrentQueue<Task> ();
|
|||
|
|
|||
|
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<Task> GetScheduledTasks ()
|
|||
|
{
|
|||
|
return queue;
|
|||
|
}
|
|||
|
|
|||
|
public int ExecuteAll ()
|
|||
|
{
|
|||
|
int i = 0;
|
|||
|
Task task;
|
|||
|
while (queue.TryDequeue (out task)) {
|
|||
|
TryExecuteTask (task);
|
|||
|
i++;
|
|||
|
}
|
|||
|
return i;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|