C# BeginInvoke 创建线程有时候创建失败,是什么原因呢?

具体请看图片,哪位大神协助看下呢,
图片说明

http://www.cnblogs.com/zhangchenliang/p/4953649.html

简单来说,BeginInvoke异步的线程是由线程池分配的可重复使用的空闲线程,一般不会超过CPU逻辑核心数,
所以同时调用多个BeginInvoke,在异步执行的方法里面打印出来的线程ID很多都是重复的,当方法执行完成线程就会被挂起,等待下次任务分配。
类似Socket异步等待接收数据的线程挂起时,线程池也有可能会把该线程分配给其他任务。
这种方式的好处是避免了线程频繁开启注销的性能开销。
而使用Thread.Start 这种方式是强制开启线程,当并行的线程数超过逻辑核心时会分隔CPU时间片。