イベントハンドラ。AddHandler と Handles 疑問の疑問の疑(ry

↓こんなイベントを発生するクラスがあったとして、


[Visual Basic]

Imports System
Imports System.Collections.Generic


' ジェネリッククラスであることに何の意味も無いけど。
Public Class Folder(Of T)


Private _value As T

Public Property Value() As T
Get
Return
_value
End Get
Set(ByVal value As T)
_value = value
' イベントを発生させる。
RaiseEvent ValueUpdated(Me, New EventArgs)
End Set
End Property


Public Event ValueUpdated(ByVal sender As Object, ByVal e As EventArgs)


End Class

複数のハンドラを指定したりとか。

[Visual Basic]

Imports System
Imports System.Collections.Generic


Public Class EventHandleTestClass

' WithEvents 宣言で イベントの発生が通知されるようになるさ。
Private WithEvents eventSender As New Folder(Of Object)


Private Sub eventSender_ValueUpdated_1(ByVal sender As Object, ByVal e As EventArgs) Handles eventSender.ValueUpdated

Console.WriteLine("ハンド!ハンド!今絶対手で触ったって!")

End Sub


Private Sub eventSender_ValueUpdated_2(ByVal sender As Object, ByVal e As EventArgs) Handles eventSender.ValueUpdated

Console.WriteLine("ハン㌦!(゚∀゚ )( ゚∀゚)ハン㌦!")

End Sub


End Class

この場合のイベントハンドラの実行順序はどうなるんだろうか?

AddHandlerなら、順序は保証されるのかしらぁ?


[Visual Basic]

Imports System
Imports System.Collections.Generic


Public Class EventHandleTestClass


Private eventSender As New Folder(Of Object)


Public Sub New()

' AddHandler で動的にイベントハンドラを追加するさ。
AddHandler eventSender.ValueUpdated, AddressOf Me.eventSender_ValueUpdated_1
AddHandler eventSender.ValueUpdated, AddressOf Me.eventSender_ValueUpdated_2

End Sub


Private Sub eventSender_ValueUpdated_1(ByVal sender As Object, ByVal e As EventArgs)

Console.WriteLine("ハンド!ハンド!今絶対手で触ったって!")

End Sub


Private Sub eventSender_ValueUpdated_2(ByVal sender As Object, ByVal e As EventArgs)

Console.WriteLine("ハン㌦!(゚∀゚ )( ゚∀゚)ハン㌦!")

End Sub


End Class

ふむぅ。どっかにドキュメント無いかなぁ〜。(検索中...)