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

123

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

// Mô phỏng việc xử lý tốn nhiều thời gian.

Thread.Sleep(delay);

Console.WriteLine("{0} : {1} example - thread finishing.",

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

// Trả về thời gian hoàn tất phương thức.

return DateTime.Now;

}

AsyncExecutionExample

chứa năm phương thức diễn đạt các cách tiếp cận khác nhau về việc

kết thúc phương thức thực thi bất đồng bộ. Dưới đây sẽ mô tả và cung cấp mã lệnh cho các
phương thức đó.

1.

Phương thức

BlockingExample

Phương thức

BlockingExample

thực thi bất đồng bộ phương thức

LongRunningMethod

tiếp tục thực hiện công việc của nó trong một khoảng thời gian. Khi xử lý xong công
việc này,

BlockingExample

chuyển sang trang thái dừng (block) cho đến khi phương

thức

LongRunningMethod

kết thúc. Để vào trạng thái dừng,

BlockingExample

thực thi

phương thức

EndInvoke

của thể hiện ủy nhiệm

AnsyncExampleDelegate

. Nếu phương

thức

LongRunningMethod

kết thúc,

EndInvoke

trả về ngay lập tức, nếu không,

BlockingExample

chuyển sang trạng thái dừng cho đến khi phương thức

LongRunningMethod

kết thúc.

public static void BlockingExample() {

Console.WriteLine(Environment.NewLine +

"*** Running Blocking 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,

"Blocking", null, null);

// Thực hiện công việc khác cho đến khi

// sẵn sàng đi vào trạng thái dừng.

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

Console.WriteLine("{0} : Continue processing until " +

"ready to block...",

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.