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
输出:
Title changed!
Title changed!
期望的输出:
Title changed!
我希望事件管理器检测到此事件已由此处理程序处理,因此不应重新处理(或读取)它.
你也可以随时调用RemoveHandler之前AddHandler.我在特定场景中发现了这种实用性.
| 归档时间: | 
 | 
| 查看次数: | 1624 次 | 
| 最近记录: |