我刚注意到通过ThreadPool.QueueUserWorkItem
排队的回调顺序是不确定的,它肯定不是回调被传递的顺序。
可以通过以下简单程序进行验证:
private static void Main()
{
for (var i = 0; i < 10; ++i)
ThreadPool.QueueUserWorkItem(Console.Write, i + " ");
Thread.Sleep(1000);
}
一次运行的输出如下:
0 3 8 9 1 2 5 4 6 7
这个名称表明顺序是被保留的。
有没有办法确保顺序被保留?
如果没有,您建议采用什么替代实现方法?