42 lines
1,013 B
C#
42 lines
1,013 B
C#
using System;
|
|
|
|
namespace DepthFirstScheduler
|
|
{
|
|
public static partial class Scheduler
|
|
{
|
|
private static IScheduler threadPool;
|
|
|
|
public static IScheduler ThreadPool
|
|
{
|
|
get { return threadPool ?? (threadPool = new ThreadPoolScheduler()); }
|
|
}
|
|
|
|
public class ThreadPoolScheduler : IScheduler
|
|
{
|
|
public void Enqueue(TaskChain item)
|
|
{
|
|
System.Threading.ThreadPool.QueueUserWorkItem(_ =>
|
|
{
|
|
if (item == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
while (true)
|
|
{
|
|
var status = item.Next();
|
|
if (status != ExecutionStatus.Continue)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|