投稿者 るきお  (社会人) 投稿日時 2022/8/11 09:19:20
Visual Studio 2022 + .NET Framework 4.8 で試してみましたが、現象は再現せず正常に動作しました。

次のコードで試しました。
フォームにはButton1, Label1, BackgroundWorkder1 を配置しています。


Imports System.ComponentModel

Public Class Form1

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        BackgroundWorker1.WorkerReportsProgress = True
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()
    End Sub

    Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim worker As BackgroundWorker = DirectCast(sender, BackgroundWorker)

        While True
            Task.Delay(1000).Wait()
            worker.ReportProgress(Now.Second)
        End While

    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        Label1.Text = (e.ProgressPercentage.ToString)
    End Sub

End Class


Visual Studio 2013では試していません。このコードでも現象が発生しますか?

プログラムが動かなくて困っているときは、現象が再現できるコンパクトなプログラムを作って載せていただくと手間が省けます。

一点気になったのはここです。
> 具体的には、Label1.TextにProgressChangedのイベント引数に渡したStringを入れようとしています。
ReportProgress メソッドの引数の話をされていますでしょうか?このメソッドの引数には文字列を渡せません。
ProgressChangedイベントの第2引数 ProgressChangedEventArgs の ProgressPercentage も Integerなので直接イベントハンドラーを呼び出しているとしても文字列は渡せませんし、どういうプログラムをしているのかなと思いました。
こういった点を簡潔に伝えるためにもやはり現象が再現するコンパクトなプログラムがあるとよいですね。