Multithreading 并行多线程

Multithreading 并行多线程,multithreading,task,Multithreading,Task,我想知道如何背靠背运行多个线程,以及执行顺序如何。所以我刚刚创建了一个控制台应用程序来深入了解线程概念 请找到密码 class Program { static void Main(string[] args) { List<System.Threading.Tasks.Task> task = new List<System.Threading.Tasks.Task>(); for(int i = 0 ; i<=10

我想知道如何背靠背运行多个线程,以及执行顺序如何。所以我刚刚创建了一个控制台应用程序来深入了解线程概念

请找到密码

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();
    }
}
类程序
{
静态void Main(字符串[]参数)
{
列表任务=新建列表();
对于(inti=0;i Directory.CreateDirectory(“D://Dummy”+i+”);
task.Add(task1);
}
System.Threading.Tasks.Task.WaitAll(Task.ToArray());
foreach(任务中的var任务)
{
Console.WriteLine(“任务Id{0}已完成{1}状态{2}已出错{3}”,tasks.Id,tasks.IsCompleted,tasks.Status,tasks.IsFaulted);
}
Console.ReadLine();
}
}
当我执行上面的代码时,我遇到了下面列出的一些查询

1) 当我在第一个for循环中遇到断点时,我能够创建文件夹,但在我刚刚执行控制台时却不能。文件夹为最后一个迭代值(101)创建,实际上最后一个值是100,但也不知道101是怎么来的


2) 线程处理的顺序是随机的,与队列中的顺序不同

如果要按顺序运行线程,请在methods中使用synchronized关键字 范例-


那么为什么进程没有按预期执行。未为创建100个文件夹“循环u写入条件”(int i=0;i100文件夹应根据代码创建,但在调试时创建,而不是在没有断点的情况下创建。我没有正确获取您的信息。根据代码,它应创建100个目录。当我在代码中有断点时,它会正确创建,并逐个执行。但在我运行控制台应用程序时不会创建。您能获得吗?
public synchronized void methodName() {}