Shi*_*mmy 3 vb.net events event-handling
如何避免事件被处理两次(如果是相同的处理程序?)
Module Module1
Sub Main()
Dim item As New Item
AddHandler item.TitleChanged, AddressOf Item_TitleChanged
AddHandler item.TitleChanged, AddressOf Item_TitleChanged
item.Title = "asdf"
Stop
End Sub
Private Sub Item_TitleChanged(sender As Object, e As EventArgs)
Console.WriteLine("Title changed!")
End Sub
End Module
Public Class Item
Private m_Title As String
Public Property Title() As String
Get
Return m_Title
End Get
Set(ByVal value As String)
m_Title = value
RaiseEvent TitleChanged(Me, EventArgs.Empty)
End Set
End Property
Public Event TitleChanged As EventHandler
End Class
Run Code Online (Sandbox Code Playgroud)
输出:
Title changed!
Title changed!
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Title changed!
Run Code Online (Sandbox Code Playgroud)
我希望事件管理器检测到此事件已由此处理程序处理,因此不应重新处理(或读取)它.
你也可以随时调用RemoveHandler之前AddHandler.我在特定场景中发现了这种实用性.