(Threading Tutorial) บางครั้งที่เราเขียนโปรแกรมเราอาจจะให้โปรแกรมทำงานเป็นงานๆไป จนกว่าจะเสร็จกระบวนการแล้วค่อยทำงานชิ้นต่อไป แต่ในโลกความเป็นจริงคอมพิวเตอร์จำเป็นต้องทำงานหลายๆงานพร้อมกัน จึงทำให้เกิดเธรดขึ้นมาเพื่อนแยกการทำงานเพื่อให้งานเสร็จไวขึ้น พูดง่ายๆ ก็เหมือนกับคนเราเวลาดูโทรทัศน์ที่จะต้องฟังเสียงและดูภาพไปพร้อมๆกัน หัวข้อนี้ผมจะมาลองเขียน Thread แบบง่ายๆโดยมีโจทย์ให้เขียนโปรแกรมโดยให้ฟังก์ชันแรกปริ้นข้อความไปสักพักแล้วให้อีกฟังก์ชันปริ้นอีกข้อความขึ้นพร้อมๆกัน
โดยขั้นแรกเราจะมาเขียนฟังก์ชั่นปริ้นค่าก่อนด้วยโค๊ดต่อไปนี้
public static void Thread1()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Thread 1");
Thread.Sleep(1000);
}
}
public static void Thread2()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Thread 2");
Thread.Sleep(1000);
}
}
จะสังเกตว่า 2 ฟังก์ชันนี้เหมือนกันนะครับ จะสังเกตเห็น Thread.Sleep(1000); อันนี้คือผมจะให้มันหยุดไปชั่วขณะ 1 วินาทีก่อนที่จะทำรอบต่อไป อ่อ ! อย่าลืม using System.Threading; นะครับเวลาเรียกใช้ Thread ตามโจทย์ก็คือผมจะให้ฟังก์ชัน Thread1 ทำงานไปประมาณ 5 วินาทีแล้วจะให้ฟังก์ชัน Thread2 ทำงานและสองฟังก์ชันนี้จะทำงานไปพร้อมๆกันครับต่อมาใน main ฟังก์ชันเราจะเขียนโค๊ดดังต่อไปนี้ครับ
static void Main(string[] args)
{
Thread threadA = new Thread(new ThreadStart(Thread1));
Thread threadB = new Thread(new ThreadStart(Thread2));
threadA.Start();
Thread.Sleep(5000); //Delay 5s
threadB.Start();
}
เข้าใจกันง่ายๆก็เหมือนกับว่าเราสร้าง Thread ขึ้นมาแล้วสั่งให้มันเริ่มทำงานนั่นแหละครับเดี๋ยวลองดูการรันโปรแกรมของผมดูนะครับ ว่าผลจะเป็นยังไง ^_^