[C#] Progressbar im anderen Thread ansprechen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von chris1611, 4. März 2009 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 4. März 2009
    Progressbar im anderen Thread ansprechen

    Hi Leute,
    habe da so ein folgendes Problem. Ich habe mir ein Synchronisierungs-Programm 2er Ordner geschrieben
    das synchronisieren(kopieren von Ordner1 nach Ordner2) klappt auch alles wunderbar. Habe eine schöne Progressbar die auch richtig läuft usw....
    Doch jetzt wähle ich einen Ordner wo 10GB drin sind z.b.
    da dauert das kopieren dann ja schon etwas viel länger...dann wollte ich da einen Abbrechen-Button haben der das synchronisieren abbricht. Doch da die Form dann ja gesperrt ist muss ich die kopieren funktion ja in einen Thread auslagern oder? Die Progrssbar dann natürlich auch... doch dann wirds kompliziert... wie spreche ich dann die progrssbar an... man sagte mir das geht dann nicht so einfach... kann mir jemand erklären was man da dann machen muss....
    also ich klick auf button kopieren--->dann wird ein neuer thread gestartet mit der copy-funktion und mit der aktualisierung der progessbar(nur wie macht man das dann genau??)
    somit wäre dann die standard form nicht gesperrt und ich könnte ganz einfach auf abbrechen klicken. Danke schonmal.
     

  2. Anzeige
  3. #2 4. März 2009
    AW: Progressbar im anderen Thread ansprechen

    ich weiß jetzt nich wieviel erfahrung du hast

    aber ganz grob:

    mithilfe von delegaten die progressbar oder ganze form invoken und dann step() machen oda wie auch immer du dein fortschritt setzt

    Code:
    void DoCheapGuiAccess ()
    {
     if (ctrl.InvokeRequired) { // Wenn Invoke nötig ist, ...
     // dann rufen wir die Methode selbst per Invoke auf
     ctrl.Invoke (new MethodInvoker (DoCheapGuiAccess));
     return;
     }
     // eigentlicher Zugriff; läuft jetzt auf jeden Fall im GUI-Thread
     ctrl.Text = "Hello World!";
    }

    link: [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke) | FAQ | myCSharp.de - DIE C# und .NET Community
     
  4. #3 4. März 2009
    AW: Progressbar im anderen Thread ansprechen

    He schau dir dazu mal den backgroundworker an...
    der ist genau für solche sachen da und hat auch ein cancel event.

    BackgroundWorker-Klasse (System.ComponentModel)

    vielleicht hilft dir das :)

    Greetz Jojo
     
  5. #4 5. März 2009
    AW: Progressbar im anderen Thread ansprechen

    komm damit dem backgroundworker nicht so ganz mit klar...
    und das mit dem mycsharp.de beispiel ist zwar ganz nett aber meine form ist trotzdem blockiert... geht iwie auch nicht...
    sitze hier schon den ganzen tag herum weil ich das nich hinbekomme... bin auch nicht DER Programmierer jetzt.... also hab nich soo viel ahnung ^^
    hat jemand ein Codebeispiel für mich... für das konkrete Problem:
    ich kopiere alle daten von ordner1 nach ordner2
    dabei soll sich die progressbar aktualisieren nach jeder datei....
    aber in nem anderen thread... soweit mein problem ^^

    mfg chris
     
  6. #5 5. März 2009
    AW: Progressbar im anderen Thread ansprechen

    Machs umgekehrt...
    lass den backgroundworker das kopieren erledigen und aktualisier die progressbar mit der ProgressChanged funktion...
    Gibt bei google genug beispiele dafür...
    kannst ja auch ma anfangen und deinen code posten.
    dann kann ich dir bestimmt auch helfen.

    greetz Jojo
     

  7. Videos zum Thema
Die Seite wird geladen...