Dieser Tipp zeigt anhand eines Beispiels, wie Sie "Parameter" an die Backgroundworker-Ereignisse DoWork und ProgressChanged übergeben. So können Sie innerhalb des ProgessChanged-Ereignisses z.B. eine Listview mit den Parametern die so vom DoWork-Ereignis aus übergeben haben befüllen. In unserem Beispiel sollen die Dateien eines Ordners in einem Listview aufgelistet werden. Structure TypeSuchParameter Dim Pfad As String Dim Dateityp As String End Structure Und nun der Aufruf des Background-Workers mit unserer UDT: Private Sub btnSearch_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSearch.Click Dim SuchUDT As TypeSuchParameter With SuchUDT .Pfad = txtFolder.Text .Dateityp = cmbType.SelectedItem ' Wenn kein Datentyp angegeben wurde, ' dann *.* als Wildcard verwenden If .Dateityp = Nothing Then .Dateityp = "*.*" ' Prüfen ob ein Ordner angegeben wurde If .Dateityp = "" Then MessageBox.Show("Bitte wählen Sie zu erst einen Ordner aus.", _ "Ordner noch auswählen", MessageBoxButtons.OK, _ MessageBoxIcon.Stop) Exit Sub End If End With ' Liste löschen ListView1.Items.Clear() ' Backgroundworker mit Pfad als Parameter starten BackgroundWorker1.RunWorkerAsync(SuchUDT) End Sub Und nun das DoWork Ereignis, in der wir mit Hilfe der Funktion „DirectCast“ die übergebene UDT auslesen: Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, _ ByVal e As System.ComponentModel.DoWorkEventArgs) _ Handles BackgroundWorker1.DoWork ' Hinweis: Im Ereignisses "DoWork" können Sie nicht auf Forms zugreifen Dim i As Integer ' Übergebene UDT (enthält Pfad und Wildcard) auslesen ' (der 2te Parameter muss dem Typ der zu setzenden Variable ' entsprechen - Hier "TypeSuchParameter") Dim tmpSucheUDT As TypeSuchParameter = DirectCast(e.Argument, _ TypeSuchParameter) ' Wenn Sie nur einen String übergeben anstatt einem UDT wird ' dieser wie folgt ausgelesen: ' Dim BeipsielString As String = DirectCast(e.Argument, String) ' Dateien in diesem Ordner ermitteln Dim Dateien() As String = Directory.GetFiles(tmpSucheUDT.Pfad, _ tmpSucheUDT.Dateityp) ' Jetzt die Namen der Dateien einzeln an das Ereignis ' "ProgressChanged" übergeben. For Each Datei As String In Dateien ' Abbrechen wenn Cancel-Button gedrück wurde erlauben If BackgroundWorker1.CancellationPending Then e.Cancel = True Return End If ' Fortschritt in Prozent melden und Datei übergeben ' (Zum Prozentwert wird 1 Addiert, um Fehler "Division ' durch 0" zu verhindern, ' wenn keine Datei gefunden wurde) BackgroundWorker1.ReportProgress((i + 1) * 100 / _ (Dateien.Length + 1), Datei) i += 1 Next End Sub Die gefundenen Dateien (inkl. Pfad) wurden im DoWork-Ereignis an das ProgressChanged-Ereignis über die Variable „Datei“ übergeben. Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _ ByVal e As System.ComponentModel.ProgressChangedEventArgs) _ Handles BackgroundWorker1.ProgressChanged Dim Datei As String = DirectCast(e.UserState, String) ' Gefundene Datei in Listtview ausgeben Dim itemX As System.Windows.Forms.ListViewItem itemX = ListView1.Items.Add(ListView1.Items.Count.ToString, Datei, "") ' Status in Progressbbar ausgeben ToolStripProgressBar1.Value = e.ProgressPercentage End Sub Dieser Tipp wurde bereits 27.295 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |