1 namespace ConsoleApplication1 2 { 3 class Program 4 { Main(string[] args) 6 { 7 var task = Task.Factory.StartNew(() => 8 { ); 10 }, new CancellationToken(), TaskCreationOptions.None, new PerThreadTaskScheduler()); 11 12 Console.Read(); 13 } 14 } 每个Task一个Thread PerThreadTaskScheduler : TaskScheduler 20 { IEnumerable<Task> GetScheduledTasks() 22 { ; 24 } QueueTask(Task task) 27 { 28 var thread = new Thread(() => 29 { 30 TryExecuteTask(task); 31 }); 32 33 thread.Start(); 34 } TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) 37 { NotImplementedException(); 39 } 40 } 41 }
看到没有,自定义Task就是这么简单,其实自定义操作中最重要的就是其中的QueueTask方法,接下来我可以用windbg观察一下,确实是工作线程,而不是
线程池,没骗你~~~
好了,本篇就说到这里,希望对你有帮助。