Ve třídě která obsahuje funkci pro zpracování dat zaveďte Public událost ProgressChanged která bude mít jako parametr stav zpracování (výborně se na to hodí System.ComponentModel.ProgressChangedEventHandler který používá BackgroundWorker). Tuto událost vyvolávejte během zpracování. Na tuto událost v klientské (Windows Forms) části napojte metodu která bude provádět aktualizaci ProgressBaru. Nezapomeňte na Invoke v případě že zpracování probíhá v samostatném vlákně.
'Třída v knihovně
Public Class Processor
'Definice události odpovídající delegátu
Public Event ProgressChanged As ProgressChangedEventHandler
'Metoda pro zpracování dat
Public Sub ProcessData
For n As Integer = 1 To 4
'Vyvolání události při změně stavu zpacování
'Stav zpracování se nastavuje v konstruktoru ProgressChangedEventArgs
RaiseEvent ProgressChanged(Me, New ProgressChangedEventArgs(n * 25, Nothing)
Next
End Sub
End Class
Private WithEvents proc As New Processor
'Metoda pro aktualizaci průběhu deklarativně napojená na událost
Private Sub UpdateProgress(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles proc.ProgressChanged
If (InvokeRequired) Then
'V případě potřeby přesunout do vlákna uživatelského rozhraní
Invoke(New ProgressChangedEventHandler(AddressOf UpdateProgress), sender, e)
Else
'Aktualizovat uživatelské rozhraní (ProgressBar)
ProgressBar1.Value = e.ProgressPercentage
End If
End Sub
|