PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Backgroundworker, Threading


Gast
2007-11-11, 15:18:49
Hallo Leute,

also ich bin relativ neu in C#, habe mich aber schon in die grundlegenden Dinge sowie das Klassendesign eingelesen, zumindest scheint mir davon auch was hängen geblieben zu sein.

Nun schreibe ich gerade ein Programm samt GUI (mit Win Forms). Dort existiert ein "Öffnen"-Button, mit welchem sich .zip-Files auswählen lassen (per OpenFileDialog). Nach dem auswählen soll dieses Zip-File dann per ziplib extrahiert werden und der Inhalt auf diverse Sachen übeprüft werden.

Soweit, so gut. Allerdings kann es natürlich sein, dass das Zip-File über 100mb groß ist, und das Extrahieren und anschliessendes Analyisieren somit seine Zeit benötigt.
Die Hauptform ist nun Zuständig für die Auswertung der Analyse. Solange diese also nicht abgeschlossen ist, braucht die Hauptform eigentlich garnicht bedienbar bleiben, es wäre egal wenn diese hängt solange das zip-File verarbeitet wird. Nur: Controls wie z.B. das X rechts oben oder ein Abbrechen-Button sollten schon noch anklickbar sein in der Form.

Ohne das groß ausprobiert zu haben, vermute ich mal, dass ich dann entweder einen eigenen Thread für das Extrahieren, Analysieren.. erstellen muss, alternativ habe ih was von diesem Backgroundworker gelesen.

Nun die Frage: was ist da genau der Unterschied? welche Methode ist die richtige für mein Vorhaben?

Danke

Monger
2007-11-11, 16:16:22
Du hast natürlich recht, dass du das mit einem separaten Thread machen solltest.

Visual Studio bietet da den Background Worker an. Wenn du die grafische Oberfläche bearbeitest, schau einfach mal in der Toolbox unter "Komponenten" nach.

Der bietet dir verschiedene Ereignisse an, die du dann ausfüllen kannst. Alles was da drin passiert, läuft tatsächlich parallel ab. Zieh einfach mal die Hilfe zu rate, da stößt du u.a. auf dieses Tutorial:

http://msdn2.microsoft.com/de-de/library/hybbz6ke(VS.80).aspx