124
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ
DateTime.Now.ToString("HH:mm:ss.ffff"));
Thread.Sleep(200);
}
// Đi vào trạng thái dừng cho đến khi phương thức
// thực thi bất đồng bộ kết thúc và thu lấy kết quả.
Console.WriteLine("{0} : Blocking until method is " +
"complete...", DateTime.Now.ToString("HH:mm:ss.ffff"));
DateTime completion =
longRunningMethod.EndInvoke(asyncResult);
// Hiển thị thông tin kết thúc.
Console.WriteLine("{0} : Blocking example complete.",
completion.ToString("HH:mm:ss.ffff"));
}
2.
Phương thức
PollingExample
Phương thức
PollingExample
thực thi bất đồng bộ phương thức
LongRunningMethod
và
sau đó thực hiện vòng lặp polling cho đến khi
LongRunningMethod
kết thúc.
PollingExample
kiểm tra thuộc tính
IsComplete
của thể hiện
IAsyncResult
(được trả về
bởi
BeginInvoke
) để xác định phương thức
LongRunningMethod
đã kết thúc hay chưa,
nếu chưa,
PollingExample
sẽ gọi
Thread.Sleep
.
public static void PollingExample() {
Console.WriteLine(Environment.NewLine +
"*** Running Polling Example ***");
// Gọi LongRunningMethod một cách bất đồng bộ. Truyền null cho
// cả ủy nhiệm callback và đối tượng trạng thái bất đồng bộ.
AsyncExampleDelegate longRunningMethod =
new AsyncExampleDelegate(LongRunningMethod);
IAsyncResult asyncResult = longRunningMethod.BeginInvoke(2000,
"Polling", null, null);
// Thực hiện polling để kiểm tra phương thức thực thi
// bất đồng bộ kết thúc hay chưa. Nếu chưa kết thúc