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

142
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ

7.

7.

Nh n bi t khi nào m t ti u trình k t thúc

ế

ộ ể

ế

Nh n bi t khi nào m t ti u trình k t thúc

ế

ộ ể

ế

Bạn muốn biết khi nào một tiểu trình đã kết thúc.

Sử dụng thuộc tính

IsAlive

hay phương thức

Join

của lớp

Thread

.

Cách dễ nhất để kiểm tra một tiểu trình đã kết thúc hay chưa là kiểm tra thuộc tính

Thread.IsAlive

. Thuộc tính này trả về

true

nếu tiểu trình đã được khởi chạy nhưng chưa kết

thúc hay bị hủy.
Thông thường, bạn sẽ cần một tiểu trình để đợi một tiểu trình khác hoàn tất việc xử lý của nó.
Thay vì kiểm tra thuộc tính

IsAlive

trong một vòng lặp, bạn có thể sử dụng phương thức

Thread.Join

. Phương thức này khiến tiểu trình đang gọi dừng lại (block) cho đến khi tiểu

trình được tham chiếu kết thúc. Bạn có thể tùy chọn chỉ định một khoảng thời gian (giá trị

int

hay

TimeSpan

) mà sau khoảng thời gian này,

Join

sẽ hết hiệu lực và quá trình thực thi của tiểu

trình đang gọi sẽ phục hồi lại. Nếu bạn chỉ định một giá trị time-out,

Join

trả về

true

nếu tiểu

trình đã kết thúc, và

false

nếu

Join

đã hết hiệu lực.

Ví dụ dưới đây thực thi một tiểu trình thứ hai và rồi gọi

Join

để đợi tiểu trình thứ hai kết thúc.

Vì tiểu trình thứ hai mất 5 giây để thực thi, nhưng phương thức

Join

chỉ định giá trị time-out

là 3 giây, nên

Join

sẽ luôn hết hiệu lực và ví dụ này sẽ hiển thị một thông báo ra cửa sổ

Console.

using System;

using System.Threading;

public class ThreadFinishExample {

private static void DisplayMessage() {

// Hiển thị một thông báo ra cửa sổ Console 5 lần.

for (int count = 0; count < 5; count++) {

Console.WriteLine("{0} : Second thread",

DateTime.Now.ToString("HH:mm:ss.ffff"));

// Nghỉ 1 giây.

Thread.Sleep(1000);

}

}

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.