สำหรับ Thread Pool ให้สร้างเมธอดมากกว่าสองเมธอด และนำเมธอดเหล่านั้นไปคิว (Queue) เพื่อรอการทำงาน
ขั้นตอนการสร้าง
1. สร้างเมธอดตัวอย่าง:
public void one(object o) {
for (int i = 0; i <= 3; i++) {
Console.WriteLine("One executed");
}
}
2. สร้างเมธอดเพิ่มเติม (two, three) แล้วใช้ ThreadPool.QueueUserWorkItem เพื่อคิวเมธอดเหล่านั้น:
Demo d = new Demo();
for (int i = 0; i < 3; i++) {
ThreadPool.QueueUserWorkItem(new WaitCallback(d.one));
ThreadPool.QueueUserWorkItem(new WaitCallback(d.two));
ThreadPool.QueueUserWorkItem(new WaitCallback(d.three));
}
ตัวอย่างโค้ดเต็ม
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
class Demo {
public void one(object o) {
for (int i = 0; i <= 3; i++) {
Console.WriteLine("One executed");
}
}
public void two(object o) {
for (int i = 0; i <= 3; i++) {
Console.WriteLine("Two executed");
}
}
public void three(object o) {
for (int i = 0; i <= 3; i++) {
Console.WriteLine("Three executed");
}
}
static void Main() {
Demo d = new Demo();
for (int i = 0; i < 3; i++) {
ThreadPool.QueueUserWorkItem(new WaitCallback(d.one));
ThreadPool.QueueUserWorkItem(new WaitCallback(d.two));
ThreadPool.QueueUserWorkItem(new WaitCallback(d.three));
}
Console.Read();
}
}
ผลลัพธ์ (ตัวอย่าง)
Two executed Two executed Two executed Two executed Two executed Two executed Two executed One executed One executed One executed One executed One executed Two executed Two executed Three executed Three executed Two executed One executed Three executed Two executed Three executed One executed One executed One executed
หมายเหตุ: ลำดับการทำงานอาจแตกต่างกันไปในแต่ละครั้งที่รัน เพราะขึ้นอยู่กับการจัดตารางเวลาของ Thread Pool