多线程 线程池 VB.NET

1:线程池 测试代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim callBack = New WaitCallback(AddressOf PooledFunc)
For Index As Integer = 1 To 10
ThreadPool.QueueUserWorkItem(callBack, Index)
Next
End Sub
Private Sub PooledFunc(ByVal Index As Integer)
Console.WriteLine(TimeValue(Now) & ":Start----" & Index) '输出索引 启动
Thread.Sleep(10000) '延时10秒
Console.WriteLine(TimeValue(Now) & ":End----" & Index) '输出索引 结束
End Sub
2: 执行后输出结果
16:41:07:Start----2
16:41:07:Start----1
16:41:07:Start----3
16:41:07:Start----4
16:41:08:Start----5
16:41:09:Start----6
16:41:10:Start----7
16:41:11:Start----8
16:41:12:Start----9
16:41:13:Start----10
16:41:17:End----2
16:41:17:End----1
16:41:17:End----4
16:41:17:End----3
16:41:18:End----5
16:41:19:End----6
16:41:20:End----7
16:41:21:End----8
16:41:22:End----9
16:41:23:End----10

想请教,为什么前四个线程之后的线程都是每秒才启动一个?有什么办法能让所有线程快速启动而不需要每秒一个的等待么?
非常感谢

这个没法做到。原因
1)当你将方法排入线程池队列后,此方法在有线程池线程变得可用时执行。
2)线程池中某个线程的可用与不可用,是由.net 后台决定,用户程序无法控制的
3)正如你观察到的:线程启动的时间不同,有快有慢,这恰恰说明线程池起作用了:线程池的调度试图让程序响应达到最佳。
温馨提示:答案为网友推荐,仅供参考