a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
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;
|
|
}
|
|
}
|
|
} |