Gọi đúng sự kiện

Lưu ý rằng nếu không có thuê bao, một sự kiện .NET sẽ không có giá trị. Vì vậy khi nâng cao sự kiện từ C # kiểm tra nó cho null đầu tiên.

    sự kiện công cộng EventHandler SelectedNodeChanged;

 

được bảo vệ ảo void OnSelectedNodeChanged ( người gửi đối tượng , EventArgs e)

{

// Sự kiện sẽ bị vô hiệu nếu không có thuê bao

nếu (SelectedNodeChanged! = null )

{

SelectedNodeChanged ( điều này , e);

}

}

Tuy nhiên trong ứng dụng đa luồng, người đăng ký cuối cùng có thể hủy đăng ký ngay sau khi kiểm tra không và trước khi sự kiện được đưa ra. Để tránh một trường hợp ngoại lệ tham chiếu null tạo ra một bản sao tạm thời của sự kiện.

    sự kiện công cộng EventHandler SelectedNodeChanged;

 

được bảo vệ ảo void OnSelectedNodeChanged ( người gửi đối tượng , EventArgs e)

{

// Tạo bản sao tạm thời của sự kiện để tránh khả năng

/ một điều kiện chủng tộc nếu người đăng ký cuối cùng hủy đăng ký

/ / ngay sau khi kiểm tra không và trước khi sự kiện được nâng lên.

Xử lý EventHandler = SelectedNodeChanged;

 

// Sự kiện sẽ bị vô hiệu nếu không có thuê bao

if (handler! = null )

{

xử lý ( điều này , e);

}

}

đệ trình bởi Sergey P.

Leave a Reply

Your email address will not be published. Required fields are marked *