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

133

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

Unregister

của đối tượng

System.Threading.RegisteredWaitHandle

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

thức

RegisterWaitForSingleObject

) được sử dụng để hủy bỏ việc đăng ký.

Lớp thường được dùng làm bộ kích hoạt là

AutoResetEvent

, nó sẽ tự động chuyển sang trạng

thái unsignaled sau khi ở trạng thái signaled. Tuy nhiên, bạn cũng có thể thay đổi trạng thái
signaled theo ý muốn bằng lớp

ManualResetEvent

hay

Mutex

. Ví dụ dưới đây trình bày cách sử

dụng một

AutoResetEvent

để kích hoạt thực thi một phương thức có tên là

EventHandler

.

using System;

using System.Threading;

public class EventExecutionExample {

// Phương thức sẽ được thực thi khi AutoResetEvent đi vào trạng

// thái signaled hoặc quá trình đợi hết thời gian (time-out).

private static void EventHandler(object state, bool timedout) {

// Hiển thị thông báo thích hợp ra cửa sổ Console

// tùy vào quá trình đợi đã hết thời gian hay

// AutoResetEvent đã ở trạng thái signaled.

if (timedout) {

Console.WriteLine("{0} : Wait timed out.",

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

} else {

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

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

}

}

public static void Main() {

// Tạo một AutoResetEvent ở trạng thái unsignaled.

AutoResetEvent autoEvent = new AutoResetEvent(false);

// Tạo một thể hiện ủy nhiệm WaitOrTimerCallback

// tham chiếu đến phương thức tĩnh EventHandler.

// EventHandler sẽ được gọi khi AutoResetEvent đi vào

// trạng thái signaled hay quá trình đợi hết thời gian.

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.