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
và
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.