Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
Tyrannmisu
Newbie
Newbie

Anmeldedatum: 17.03.2011
Beiträge: 8

Mehrere Backgroundworker erstellen
Verfasst am: 17.03.2011, 13:03

Hallo erst mal alle zusammen Smile

Also ich programmier schon seit ein paar Jahren Hobbymäßig in VB.Net (früher auch VB6), weiß aber auch vieles noch nicht und entdecke immer wieder was neues.
Zur Zeit schreibe ich ein kleines Backup Programm, dort kann man mehrere Aufträge hinterlegen welche das Programm das ausführt, z.B.:

Job1 Datei jede Minute kopieren
Job2 Datei kopieren wenn Hashwert ungleich
Job3 Datei kopieren wenn Änderungsdatum ungleich

Job1 hat ja sowieso einen festen Zeitwert
und Job2 und 3 werden in einer festgelegten Zeit immer mal wieder überprüft (im Falle meiner Testeinstellung vorerst jede Minute).

Bisher hab ich die Behandlung so gelöst:
Die Jobs stehen in einer ArrayList und werden über einen Timer behandelt, im Timer selbst befindet sich eine Schleife welche die Jobs im Array bearbeitet, bzw. überprüft ob es denn schon ander Zeit ist den Kopierauftrag auszuführen oder die Bedinung zu checken.
Das klappt an sich, aber wenn jetzt mal eine größere Datei kopiert wird, welche länger als eine Minute braucht, werden die anderen Jobs auch erst wieder abgefragt/gestartet wenn der Vorgang fertig ist, das ist eigentlich etwas unschön.

Also hab ich mir jetzt überlegt für jeden Job einen eigenen Worker zu erstellen, nach ein wenig Recherche habe ich herausgefunden, dass man sowas gut mit backgroundworkern machen kann.
Also will ich jetzt für jeden Job einen eigenen Backgroundworker erstellen und daran scheiterts im Moment.

Habe bisher folgeden Code:
Code:
Dim MyBGW() As System.ComponentModel.BackgroundWorker


Die backgroundworker sollen erstellt und gestartet werden, indem man auf einen Button klickt:
Code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Job As ListBox
        workeractive = True

        For Each Job In Jobarray
            Dim workcount As Integer = Job.Items.Item(1)
            If Job.Items.Item(0) = "X" Then
                MyBGW(workcount) = New System.ComponentModel.BackgroundWorker
                MyBGW(workcount).WorkerSupportsCancellation = True
                AddHandler MyBGW(workcount).DoWork, AddressOf MyBGW_DoWork
                AddHandler MyBGW(workcount).RunWorkerCompleted, AddressOf MyBGW_RunWorkerCompleted
                MyBGW(workcount).RunWorkerAsync(Job)
            End If
        Next
end sub


Da ist aber schon was faul, denn ich kriege in der Zeile:
Code:
 MyBGW(workcount) = New System.ComponentModel.BackgroundWorker

den Fehler: NullReferenceEcexeption wurde nicht behandelt : Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Mit einem festem backgroundworker hab ich es schon zum laufen bekommen, aber das möchte ich eigentlich nicht.

Wäre für Hilfe sehr dankbar !


Edit:
Okay habs herausgefunden, muss
Code:
Dim MyBGW(workcount) As BackgroundWorker

hinzufügen jetzt habe ich zwar weitere Probleme aber erst mal gucken, wenn hier jemand trotzdem sieht, dass was falsch ist oder besser sein könnte dann ruhig schreiben Wink
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: backgroundworker, vb6, timer, objektinstanz, objektverweis

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: Filebrowser z.B. für ein RAT 2205 13.01.2008, 12:14
Keine neuen Beiträge msgbox mit symbol _&_ z.B. yesno oder systemmodal 1156 27.09.2008, 00:16
Keine neuen Beiträge Abändern eines Ordnernamens (z.B. C:\Programme = Programme) 1294 23.04.2008, 16:33
Keine neuen Beiträge "Zurück-Funktion" mit Listview und z.B. DirView 823 17.04.2008, 14:30
Keine neuen Beiträge Fenster auslesen z.b von icq oder msn wer online kommt 1336 11.02.2008, 17:46
 


[ Time: 0.0711s ][ Queries: 82 (0.0293s) ][ GZIP on - Debug on ]