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

わんくま同盟

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

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


(過去ログ 179 を表示中)
■102532 / )  Re[2]: 時間のかかる処理の進行の表示
□投稿者/ 焼いも (5回)-(2023/11/13(Mon) 18:31:16)
No102529 (KOZ さん) に返信

これは凄い!
もう諦めてただけにメチャクチャ嬉しいです。
30分近くも掛かる処理なので尚更です。

申し訳ないのですが、もしよかったら関連してのもう一つお願いは出来ないでしょうか?
それは「Label2.Text = "テスト"」のとこで下のエラーがことです。

> ユーザーが処理していない例外
> System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'Label2' がアクセスされました。

    Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = 1000
        ProgressBar1.Value = 0
        Label1.Text = "0"
        Await Task.Run(
            Sub()
                For i = 0 To 1000
                    System.Threading.Thread.Sleep(10)
                    Call test()

                    Invoke(
                        Sub(index As Integer)
                            ProgressBar1.Value = index
                            Label1.Text = index.ToString()
                            Me.Refresh()
                        End Sub, i)
                Next
            End Sub)
    End Sub

    'ここでもう一つの作業を実施
    Private Sub test()
        Label2.Text = "テスト"        '< ---ここに「ユーザーが処理していない例外」が出る
    End Sub

返信 編集キー/


管理者用

- Child Tree -