hocam bi tane delagete örneği yaptım. backgroundworker kullandım. sen thread kullanmışsan çalıştırdığın fonksiyona (target) background worker ın do eventindeki kodu yapıştır

bu sayede progressbar a sıkıntısız değer atayabilirsin

Public Class Form1

    Private Delegate Sub MyDelegate()

    Private Sub SetValue()
        ProgressBar1.Value = 50
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        BackgroundWorker1.RunWorkerAsync()
    End Sub

    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

        Dim del As MyDelegate
        del = New MyDelegate(AddressOf SetValue)

        ProgressBar1.Invoke(del)

    End Sub
End Class


--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 18:00:38 -->-> Daha önceki mesaj 17:56:43 --

bu da parametreli hali

Public Class Form1

    Private Delegate Sub MyDelegate(val As Double)

    Private Sub SetValue(val As Double)
        ProgressBar1.Value = val
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        BackgroundWorker1.RunWorkerAsync()
    End Sub

    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

        Dim del As MyDelegate
        del = New MyDelegate(AddressOf SetValue)

        ProgressBar1.Invoke(del, 20)

    End Sub
End Class

üstteki kodunda kullandığın
ProgressBar1.Value = e.ProgressPercentage

yerine

Dim del As MyDelegate
del = New MyDelegate(AddressOf SetValue)

ProgressBar1.Invoke(del, e.ProgressPercentage)

yaparsan olur..

sıkıntı varsa özelden teamviewer id-pass at bakalım