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

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

WaitOrTimerCallback handler =

new WaitOrTimerCallback(EventHandler);

// Tạo đối tượng trạng thái (được truyền cho phương thức

// thụ lý sự kiện khi nó được kích hoạt). Trong trường hợp

// này, một thông báo sẽ được hiển thị.

string state = "AutoResetEvent signaled.";

// Đăng ký thể hiện ủy nhiệm để đợi AutoResetEvent đi vào

// trạng thái signaled. Thiết lập giá trị time-out là 3 giây.

RegisteredWaitHandle handle =

ThreadPool.RegisterWaitForSingleObject(autoEvent, handler,

state, 3000, false);

Console.WriteLine("Press ENTER to signal the AutoResetEvent" +

" or enter \"Cancel\" to unregister the wait operation.");

while (Console.ReadLine().ToUpper() != "CANCEL") {

// Nếu "Cancel" không được nhập vào Console,

// AutoResetEvent sẽ đi vào trạng thái signal,

// và phương thức EventHandler được thực thi.

// AutoResetEvent sẽ tự động trở về trạng thái unsignaled.

autoEvent.Set();

}

// Hủy bỏ việc đăng ký quá trình đợi.

Console.WriteLine("Unregistering wait operation.");

handle.Unregister(null);

// Nhấn Enter để kết thúc.

Console.WriteLine("Main method complete. Press Enter.");

Console.ReadLine();

}

}