138
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ
Bảng 4.1 Điều khiển quá trình thực thi của một tiểu trình
Phương thức
Mô tả
Abort
Kết thúc một tiểu trình bằng cách ném ngoại lệ
System.Threading.
ThreadAbortException
trong mã lệnh đang được chạy. Mã lệnh của tiểu
trình bị hủy có thể bắt ngoại lệ
ThreadAbortException
để thực hiện việc
dọn dẹp, nhưng bộ thực thi sẽ tự động ném ngoại lệ này lần nữa để bảo
đảm tiểu trình kết thúc, trừ khi
ResetAbort
được gọi.
Abort
trở về ngay
lập lức, nhưng bộ thực thi xác định chính xác khi nào ngoại lệ bị ném,
do đó bạn không thể cho rằng tiểu trình đã kết thúc bởi
Abort
đã trở về.
Bạn nên sử dụng các kỹ thuật được mô tả trong mục 4.7 nếu cần xác
định khi nào tiểu trình này thật sự kết thúc. Một khi đã hủy một tiểu
trình, bạn không thể khởi chạy lại nó.
Interrupt
Ném ngoại lệ
System.Threading.ThreadInterruptedException
(trong
mã lệnh đang được chạy) lúc tiểu trình đang ở trạng thái
WaitSleepJoin
.
Điều này nghĩa là tiểu trình này đã gọi
Sleep
,
Join
(mục 4.7); hoặc đang
đợi
WaitHandle
ra hiệu (để đi vào trạng thái signaled) hay đang đợi một
đối tượng dùng cho sự đồng bộ tiểu trình (mục 4.8). Nếu tiểu trình này
không ở trạng thái
WaitSleepJoin
,
ThreadInterruptedException
sẽ bị
ném sau khi tiểu trình đi vào trạng thái
WaitSleepJoin
.
Resume
Phục hồi quá trình thực thi của một tiểu trình đã bị tạm hoãn (xem
phương thức
Suspend
). Việc gọi
Resume
trên một tiểu trình chưa bị tạm
hoãn sẽ sinh ra ngoại lệ
System.Threading.ThreadStateException
trong
tiểu trình đang gọi.
Start
Khởi chạy tiểu trình mới; xem mục 4.5 để biết cách sử dụng phương
thức
Start
.
Suspend
Tạm hoãn quá trình thực thi của một tiểu trình cho đến khi phương thức
Resume
được gọi. Việc tạm hoãn một tiểu trình đã bị tạm hoãn sẽ không
có hiệu lực, nhưng việc gọi
Suspend
trên một tiểu trình chưa khởi chạy
hoặc đã kết thúc sẽ sinh ra ngoại lệ
ThreadStateException
trong tiểu
trình đang gọi.
using System;
using System.Threading;
public class ThreadControlExample {
private static void DisplayMessage() {
// Lặp đi lặp lại việc hiển thị một thông báo ra cửa sổ Console.