Invoke と BeginInvoke の動作の違いについて軽くまとめ。
Button1 を押したあとに Button2 を押して、作成されるメッセージの違いをみます。
- Invoke の場合。
Public Class Form1 Private _message As String Private Sub Button1_Click(... _message = "AAA" Me.Invoke(Sub() _message &= "BBB" End Sub) _message &= "CCC" End Sub Private Sub Button2_Click(... Console.WriteLine(_message) End Sub End Class
結果(作成されたメッセージ)
AAABBBCCC
- BeginInvoke の場合。
Public Class Form1 Private _message As String Private Sub Button1_Click(... _message = "AAA" Me.BeginInvoke(Sub() _message &= "BBB" End Sub) _message &= "CCC" End Sub Private Sub Button2_Click(... Console.WriteLine(_message) End Sub End Class
結果(作成されたメッセージ)
AAACCCBBB