CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 138

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.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.