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

125

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

// thì đi vào trạng thái chờ trong 300 mini-giây

// trước khi thực hiện polling lần nữa.

Console.WriteLine("{0} : Poll repeatedly until method is " +

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

while(!asyncResult.IsCompleted) {

Console.WriteLine("{0} : Polling...",

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

Thread.Sleep(300);

}

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

DateTime completion =

longRunningMethod.EndInvoke(asyncResult);

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

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

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

}

3.

Phương thức

WaitingExample

Phương thức

WaitingExample

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

LongRunningExample

sau đó chờ cho đến khi

LongRunningMethod

kết thúc.

WaitingExample

sử dụng thuộc

tính

AsyncWaitHandle

của thể hiện

IAsyncResult

(được trả về bởi

BeginInvoke

) để có

được một

WaitHandle

và sau đó gọi phương thức

WaitOne

của

WaitHandle

. Việc sử dụng

giá trị time-out cho phép

WaitingExample

dừng quá trình đợi để thực hiện công việc

khác hoặc dừng hoàn toàn nếu phương thức thực thi bất đồng bộ diễn ra quá lâu.

public static void WaitingExample() {

Console.WriteLine(Environment.NewLine +

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

"Waiting", null, null);

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.