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

129

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

Console.WriteLine("{0} : Continue processing...",

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

Thread.Sleep(200);

}

}

// Phương thức xử lý việc kết thúc bất đồng bộ bằng callbacks.

public static void CallbackHandler(IAsyncResult result) {

// Trích tham chiếu đến thể hiện AsyncExampleDelegate

// từ thể hiện IAsyncResult.

AsyncExampleDelegate longRunningMethod =

(AsyncExampleDelegate)result.AsyncState;

// Thu lấy kết quả của phương thức thực thi bất đồng bộ.

DateTime completion = longRunningMethod.EndInvoke(result);

// Hiển thị thông tin kết thúc.

Console.WriteLine("{0} : Callback example complete.",

completion.ToString("HH:mm:ss.ffff"));

}

3.

3.

Th c thi ph

ng th c b ng Timer

ươ

ứ ằ

Th c thi ph

ng th c b ng Timer

ươ

ứ ằ

Bạn cần thực thi một phương thức trong một tiểu trình riêng theo chu kỳ hay ở
một thời điểm xác định.

Khai báo một phương thức trả về

void

và chỉ nhận một đối tượng làm đối số. Sau

đó, tạo một thể hiện ủy nhiệm

System.Threading.TimerCallback

tham chiếu đến

phương thức này. Tiếp theo, tạo một đối tượng

System.Threading.Timer

truyền nó cho thể hiện ủy nhiệm

TimerCallback

cùng với một đối tượng trạng

thái mà

Timer

sẽ truyền cho phương thức của bạn khi

Timer

hết hiệu lực. Bộ thực

thi sẽ chờ cho đến khi

Timer

hết hiệu lực và sau đó gọi phương thức của bạn bằng

một tiểu trình trong thread-pool.

Thông thường, rất hữu ích khi thực thi một phương thức ở một thời điểm xác định hay ở
những thời khoảng xác định. Ví dụ, bạn cần sao lưu dữ liệu lúc 1:00 AM mỗi ngày hay xóa
vùng đệm dữ liệu mỗi 20 phút. Lớp

Timer

giúp việc định thời thực thi một phương thức trở

nên dễ dàng, cho phép bạn thực thi một phương thức được tham chiếu bởi ủy nhiệm

TimerCallback

ở những thời khoảng nhất định. Phương thức được tham chiếu sẽ thực thi

trong ngữ cảnh của một tiểu trình trong thread-pool.

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.