【发布时间】:2015-02-18 08:52:45
【问题描述】:
我想知道背靠背运行多个线程以及执行顺序将如何流动。所以我刚刚创建了一个控制台应用程序来深入了解线程概念。
请找代码
class Program
{
static void Main(string[] args)
{
List<System.Threading.Tasks.Task> task = new List<System.Threading.Tasks.Task>();
for(int i = 0 ; i<=100; i++)
{
System.Threading.Tasks.Task task1 = System.Threading.Tasks.Task.Run(() => Directory.CreateDirectory("D://Dummy"+i+""));
task.Add(task1);
}
System.Threading.Tasks.Task.WaitAll(task.ToArray());
foreach(var tasks in task)
{
Console.WriteLine("Task Id {0} IsCompleted {1} Status {2} IsFaulted {3} ", tasks.Id, tasks.IsCompleted, tasks.Status, tasks.IsFaulted);
}
Console.ReadLine();
}
}
当我执行上面的代码时,我遇到了一些如下所列的查询
1)当我在第一个 for 循环中遇到断点时,我能够创建文件夹,但当我刚刚执行控制台时却不行。为最后一个迭代值创建的文件夹(101)实际上最后一个值是100但也不知道101是怎么来的?
2)线程处理的顺序是随机的,而不是队列中的顺序
【问题讨论】:
标签: multithreading task