Tạo luồng (thread) mới trong C# bằng lớp System.Threading.Thread và delegate ThreadStart.
Các bước cơ bản
- Viết phương thức chứa logic luồng (không tham số, void).
- Tạo đối tượng
ThreadvớiThreadStarttrỏ đến phương thức. - Gọi
thread.Start()để bắt đầu thực thi.
Mã nguồn
using System;
using System.Threading;
class Demo {
public void myThread() {
for (int i = 0; i < 3; i++) {
Console.WriteLine("My Thread");
}
}
}
class NewThread {
public static void Main() {
Demo d = new Demo();
Thread thread = new Thread(new ThreadStart(d.myThread));
thread.Start();
Console.Read();
}
}
Kết quả
My Thread
My Thread
My Thread
Giải thích
ThreadStart: Delegate không tham số, trả về void — dùng cho phương thức đơn giản.thread.Start(): Bắt đầu luồng mới, phương thứcmyThreadchạy song song với Main.- Luồng chính (Main) tiếp tục chạy — ở đây chờ
Console.Read()để không thoát ngay.
Truyền tham số cho luồng
Dùng ParameterizedThreadStart (nhận object):
Thread thread = new Thread(new ParameterizedThreadStart(MyMethod));
thread.Start("Hello"); // Truyền đối số
void MyMethod(object data) {
Console.WriteLine(data); // "Hello"
}
Lưu ý
- Luồng mặc định là foreground thread — ứng dụng không thoát cho đến khi tất cả foreground thread kết thúc.
- Dùng
thread.IsBackground = trueđể tạo background thread (tự động kết thúc khi main thread xong). - Ưu tiên dùng
Task.Run()(TPL) cho code hiện đại — đơn giản, mạnh mẽ hơn.