C# Thread กับ task ทำงานต่างกันยังไงครับ

คือผมอยากรันโค้ดพร้อมๆกัน
เช่น การ list รายชื่อ ไฟล์ในโฟลเดอร์ พร้อมกัน

พอผมใช้ Task
แบบนี้

void Task_Class_1_0()
        {
        clsCountDown.Srat();
        Task t0 = Task.Run(() =>
         {
                System.IO.Directory.GetDirectories(@"C:\Program Files").ToList<string>ร้องไห้).ForEach(d =>
                 {
                        Task t = Task.Run(() =>
                                {
                                 System.IO.Directory.GetFiles(d,"*.*",System.IO.SearchOption.TopDirectoryOnly).ToList<string>ร้องไห้).ForEach(f =>
                                 {
                                        richTextBox1.WriteLine("AddFile: {0} ", f);
                                 });
                                });
                        t.Wait();
                        richTextBox1.WriteLine("Complete: {0} ", clsCountDown.Final);
                 });
        
         });t0.Wait();
         this.Write("Finished:{0}", clsCountDown.Final);
        }

หรือแบบนี้

void Task_Class_1_0_1()
        {
         clsCountDown.Srat();
         Task[] tasks = new Task[100000];
         int c = 0;
         System.IO.Directory.GetDirectories(@"C:\Program Files").ToList<string>ร้องไห้).ForEach(d =>
         {
                 tasks[c] = Task.Run(() =>
                {
                        System.IO.Directory.GetFiles(d, "*.*", System.IO.SearchOption.TopDirectoryOnly).ToList<string>ร้องไห้).ForEach(f =>
                        {
                         richTextBox1.WriteLine("AddFile: {0} ", f);
                        });
                
                });
                 c++;
         });
        

         int index = Task.WaitAny(tasks);
         richTextBox1.WriteLine("Task #{0} completed first.", tasks[index].Id);
         richTextBox1.WriteLine("Status of all tasks:");

         this.Write("Finished:{0}", clsCountDown.Final);
        }

ปรากฎว่ามันรันไปทีละโฟลเดอร์จนกว่าจะครบครับ


จึงอยากสอบถามครับว่า
ถ้าผมจะรัน task พร้อมๆกันจะเขียนยังไง
หรือไม่ถ้าผมจะใช้ Threading หลายๆ thread แต่ให้ให้รู้เวลาที่ทุก thread  ทำงาน จบแล้ว ต้องเขียนยังไง ครับ

ประเด็นสำคัญคือ ต้องการ รันงาน ทุกงานไปพร้อมๆกัน ไม่ต้องรอให้เสร็จทีละงาน
แต่ต้องรู้ว่าทุกงานเสร็จตอนไหนครับ
ผมลองใช้ thread  มันจะแยก เป็น thread  ใคร thread  มัน แต่ก็รันพร้อมๆกัน ซึ่งไม่รู้จะดูเวลารวมยังไง ครับ

แสดงความคิดเห็น
Preview
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่