Sự kiện - Events là các hành động của người dùng như nhấn phím, nhấp chuột, di chuyển chuột, v.v. hoặc một số sự cố như thông báo do hệ thống tạo. Các ứng dụng cần phải đáp ứng với các sự kiện khi chúng xảy ra.
Ví dụ, khi người dùng nhất nút Ctrl + C thì hệ thống sẽ thực hiện copy, hay người dùng click vào nút Send thì nó sẽ gửi nội dung đi, hay nhấn vào nút Close thì sẽ đóng ứng dụng. Ngoài ra, các sự kiện được sử dụng để inter-process communication liên lạc giữa các quá trình.
Sử dụng Delegates trong Events
Các sự kiện được khai báo và khởi phát trong một lớp và được liên kết với các trình xử lý sự kiện bằng cách sử dụng các delegates trong cùng một lớp hoặc một số lớp khác. Lớp chứa sự kiện được sử dụng để xuất bản sự kiện. Đây được gọi là lớp publisher. Một số lớp khác chấp nhận sự kiện này được gọi là lớp subscriber. Sự kiện sử dụng mô hình publisher-subscriber.
Một publisher là một đối tượng có chứa định nghĩa của sự kiện và delegate. Sự liên kết giữa event-delegate cũng được xác định trong đối tượng này. Một đối tượng lớp nhà xuất bản gọi sự kiện và nó được thông báo cho các đối tượng khác.
Một subscriber là một đối tượng chấp nhận sự kiện và cung cấp một trình xử lý sự kiện. Delegate trong publisher class gọi phương thức (xử lý sự kiện) của subscriber class.
Declaring Events
Để khai báo một sự kiện bên trong một lớp, trước hết, bạn phải khai báo một delegate type cho event (sự kiện) như sau:
public delegate string BoilerLogHandler(string str);
sau đó, khai báo event sử dụng event keyword
event BoilerLogHandler BoilerEventLog;
Mã trước định nghĩa một delegate có tên là BoilerLogHandler và một sự kiện có tên là BoilerEventLog , gọi ra delegate khi nó được khởi phát.
Example
using System;
namespace SampleApp {
public delegate string MyDel(string str);
class EventProgram {
event MyDel MyEvent;
public EventProgram() {
this.MyEvent += new MyDel(this.WelcomeUser);
}
public string WelcomeUser(string username) {
return "Welcome " + username;
}
static void Main(string[] args) {
EventProgram obj1 = new EventProgram();
string result = obj1.MyEvent("Tutorials Point");
Console.WriteLine(result);
}
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau -
Welcome Tutorials Point
إرسال تعليق