139
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ
while (true) {
try {
Console.WriteLine("{0} : Second thread running. Enter"
+ " (S)uspend, (R)esume, (I)nterrupt, or (E)xit.",
DateTime.Now.ToString("HH:mm:ss.ffff"));
// Nghỉ 2 giây.
Thread.Sleep(2000);
} catch (ThreadInterruptedException) {
// Tiểu trình đã bị gián đoạn. Việc bắt ngoại lệ
// ThreadInterruptedException cho phép ví dụ này
// thực hiện hành động phù hợp và tiếp tục thực thi.
Console.WriteLine("{0} : Second thread interrupted.",
DateTime.Now.ToString("HH:mm:ss.ffff"));
} catch (ThreadAbortException abortEx) {
// Đối tượng trong thuộc tính
// ThreadAbortException.ExceptionState được cung cấp
// bởi tiểu trình đã gọi Thread.Abort.
// Trong trường hợp này, nó chứa một chuỗi
// mô tả lý do của việc hủy bỏ.
Console.WriteLine("{0} : Second thread aborted ({1})",
DateTime.Now.ToString("HH:mm:ss.ffff"),
abortEx.ExceptionState);
// Mặc dù ThreadAbortException đã được thụ lý,
// bộ thực thi sẽ ném nó lần nữa để bảo đảm
// tiểu trình kết thúc.
}
}
}
public static void Main() {