C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■88546 / )  フォームの連続的な書き換えに関して
□投稿者/ パヨンパヨン (1回)-(2018/09/06(Thu) 19:03:27)

分類:[.NET 全般] 

テキストボックスに表示される数値を連続的に書き換えるプログラムを作りたいのですが、

普通にこういうプログラムや

    Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click

        For i = 1 To 100

            TextBox4.Text = i.ToString
            Thread.Sleep(10)

        Next

    End Sub

マルチスレッドを使った方法では最後に代入された値しか表示されません。

    Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Task.Factory.StartNew(
               Sub()

                   For i = 1 To 100

                       TextBox4.Text = i.ToString
                       Thread.Sleep(10)

                   Next

               End Sub)


    End Sub


一方で、



    Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click

        MultiProgram_run = New Thread(Sub() MultiProgram()) With {.IsBackground = True}
        MultiProgram_run.Start()

    End Sub


    Private Sub MultiProgram()

        For i = 1 To 100

            frm4.BeginInvoke(TextBox4, i.ToString)
            Thread.Sleep(10)

        Next

    End Sub

のようにバックグラウンドプロセスにしてやって、
Invokeで書き換えてやるとうまく表示させることができます。

これは一体なぜなのでしょうか?


返信 編集キー/


管理者用

- Child Tree -