C# Academy · บทเรียน

ทำความเข้าใจเธรดและงาน

สำรวจเธรดและงานเพื่อจัดการการประมวลผลแบบขนานใน C#

บทเรียน 3 จาก 510 ขั้นตอน

ทำความเข้าใจเธรดและงาน เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 5 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 5 บทเรียน

บทนำเกี่ยวกับการทำงานของเธรดและงาน

ทำความเข้าใจการทำงานของเธรดและงาน

ยินดีต้อนรับสู่บทเรียนถัดไป! ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับการทำงานของเธรดและงานใน C# ซึ่งช่วยให้คุณดำเนินการหลายอย่างพร้อมกันเพื่อให้มีประสิทธิภาพดียิ่งขึ้น มาเริ่มกันเลย!

ทำความเข้าใจเธรดและงาน — ภาพประกอบ 1

การทำงานของเธรดคืออะไร

การทำงานของเธรด คือกระบวนการดำเนินการหลายอย่างพร้อมกัน เธรดแต่ละรายการจะแสดงลำดับการควบคุมที่แยกจากกันภายในแอปพลิเคชันของคุณ

ประเด็นสำคัญ: การทำงานของเธรดช่วยเพิ่มประสิทธิภาพด้วยการใช้แกนประมวลผลหลายแกนเพื่อดำเนินการพร้อมกัน

การสร้างและเริ่มต้นเธรด

คุณสามารถสร้างและเริ่มต้นเธรดโดยใช้คลาส Thread ตัวอย่าง:

using System;
using System.Threading;

class Program {
    static void Main() {
        Thread thread = new Thread(PrintNumbers);
        thread.Start();

        Console.WriteLine("Main thread is running...");
    }

    static void PrintNumbers() {
        for (int i = 1; i <= 5; i++) {
            Console.WriteLine(i);
            Thread.Sleep(1000); // Pause for 1 second
        }
    }
}

บทนำเกี่ยวกับงาน

งาน เป็นแนวคิดนามธรรมระดับสูงกว่าสำหรับการเขียนโปรแกรมแบบทำงานพร้อมกันเมื่อเทียบกับเธรด คลาส Task เป็นส่วนหนึ่งของไลบรารีการทำงานแบบขนานของงาน (TPL) ใน C#

ตัวอย่าง: การสร้างและเริ่มต้นงาน:

เคล็ดลับ: งานจัดการได้ง่ายกว่าและมีการจัดการข้อผิดพลาดที่ดีกว่าเธรด

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        Task task = Task.Run(() => {
            for (int i = 1; i <= 5; i++) {
                Console.WriteLine(i);
                Task.Delay(1000).Wait();
            }
        });

        Console.WriteLine("Main thread is running...");
        task.Wait(); // Wait for the task to complete
    }
}

การใช้ Parallel.For และ Parallel.ForEach

คลาส Parallel ใน C# ช่วยให้คุณดำเนินการวนซ้ำแบบขนานเพื่อให้มีประสิทธิภาพดียิ่งขึ้น ตัวอย่าง:

ประเด็นสำคัญ: ใช้ Parallel.For และ Parallel.ForEach สำหรับงานที่ใช้ข้อมูลจำนวนมากและสามารถดำเนินการพร้อมกันได้

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        Parallel.For(0, 5, i => {
            Console.WriteLine($"Processing {i} on thread {Task.CurrentId}");
        });

        Console.WriteLine("All tasks completed.");
    }
}

การจัดการข้อยกเว้นในงาน

คุณสามารถดักจับข้อยกเว้นในงานโดยใช้บล็อก try-catch หรือพร็อพเพอร์ตี Task.Exception ตัวอย่าง:

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        try {
            Task task = Task.Run(() => {
                throw new InvalidOperationException("Task failed!");
            });

            task.Wait();
        } catch (AggregateException ex) {
            Console.WriteLine("Error: " + ex.InnerException.Message);
        }
    }
}

แบบฝึกหัดท้าทาย

สร้างโปรแกรมที่เริ่มต้นงานหลายรายการเพื่อประมวลผลตัวเลขแบบขนานและแสดงค่ากำลังสองของตัวเลขเหล่านั้น ตัวอย่าง:

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        int[] numbers = { 1, 2, 3, 4, 5 };

        Parallel.ForEach(numbers, number => {
            Console.WriteLine($"Square of {number}: {number * number}");
        });
    }
}

แนวทางปฏิบัติที่ดีที่สุดสำหรับการทำงานของเธรดและงาน

ต่อไปนี้คือแนวทางปฏิบัติที่ดีที่สุด:

  • เลือกใช้ Task แทน Thread สำหรับการทำงานพร้อมกันระดับสูง
  • ใช้คลาส Parallel สำหรับการดำเนินการที่ใช้ข้อมูลจำนวนมาก
  • จัดการข้อยกเว้นอย่างเหมาะสมเพื่อให้แอปพลิเคชันมีความทนทาน
  • จำกัดจำนวนเธรดหรืองานเพื่อหลีกเลี่ยงการแย่งชิงทรัพยากร

เคล็ดลับ: ใช้การเขียนโปรแกรมแบบอะซิงโครนัสเมื่อการดำเนินการรับส่งข้อมูลเป็นงานหลัก และใช้เธรดหรืองานสำหรับงานที่ใช้ CPU เป็นหลัก

ยอดเยี่ยม!

ขอแสดงความยินดีด้วย! คุณได้เรียนรู้พื้นฐานของการทำงานของเธรดและงานสำหรับการเขียนโปรแกรมแบบทำงานพร้อมกันใน C# แล้ว ในบทเรียนถัดไป เราจะเจาะลึกเรื่องดีลีเกตและนิพจน์ลัมบ์ดา ซึ่งเป็นคุณสมบัติอันทรงพลังสองอย่างสำหรับการเขียนโปรแกรมเชิงฟังก์ชัน มาเขียนโค้ดกันต่อไป!

ทำความเข้าใจเธรดและงาน — ภาพประกอบ 10
เริ่มต้นได้ฟรี

เรียนรู้ C# ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
93
บทเรียน
346

คำถามที่พบบ่อย

บทเรียน “ทำความเข้าใจเธรดและงาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ทำความเข้าใจเธรดและงาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 5 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ทำความเข้าใจเธรดและงาน”

สำรวจเธรดและงานเพื่อจัดการการประมวลผลแบบขนานใน C# คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 5 บทเรียน

บทเรียน “ทำความเข้าใจเธรดและงาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เจเนริกส์ใน C#
  2. Async และ Await: การทำงานกับโค้ดแบบไม่พร้อมกัน
  3. ทำความเข้าใจเธรดและงาน
  4. สำรวจตัวแทนและแลมบ์ดา
  5. ทำความเข้าใจการสะท้อนใน C#
← กลับไปที่ C# Academy