Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

โปรแกรม C# หยุดเธรด (Kill Thread)

ใน C# ไม่ควรใช้ Thread.Abort() เพราะอาจทำให้ข้อมูลเสียหาย วิธีที่แนะนำคือใช้ Flag (ธงสัญญาณ) เพื่อบอกให้เธรดหยุดทำงานเอง

หลักการทำงาน

  1. สร้างตัวแปร flag (bool) เริ่มต้นเป็น false
  2. ในเธรด ให้วนลูปทำงานต่อเมื่อ flag == false
  3. เมื่อต้องการหยุด ให้ตั้ง flag = true จากเธรดหลัก
  4. ใช้ thread.Join() รอให้เธรดจบการทำงาน

ตัวอย่างโค้ดเต็ม

using System;
using System.Threading.Tasks;
using System.Threading;
class Demo {
    static void Main(string[] args) {
        MyClass c = new MyClass();
        // สร้างเธรดใหม่
        Thread thread = new Thread(c.display);
        thread.Start();
        Console.WriteLine("Press any key to exit!");
        Console.ReadKey();
        c.Stop();      // ตั้ง flag = true
        thread.Join(); // รอให้เธรดจบ
    }
}
public class MyClass {
    private bool flag = false;
    public void display() {
        while (!flag) {
            Console.WriteLine("It's Working");
            Thread.Sleep(2000);
        }
    }
    public void Stop() {
        flag = true;
    }
}

ผลลัพธ์

It's Working
Press any key to exit!

ข้อดี: วิธีนี้ปลอดภัยกว่า Abort() เพราะให้เธรดทำความสะอาดทรัพยากรได้ก่อนจบการทำงาน