[VB.NET] Invoke と BeginInvoke の違い

2013年8月28日

 Invoke と BeginInvoke の動作の違いについて軽くまとめ。
 Button1 を押したあとに Button2 を押して、作成されるメッセージの違いをみます。

  1. 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
    
  2. 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
    





カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org