Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
BackgroundWorker - UserState Objekt übergeben
Viper2000
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

BackgroundWorker - UserState Objekt übergeben

beantworten | zitieren | melden

Hallo,

ich nutze in meinem Projekt einen BackgroundWorker und würde gerne im ReportProgress neben dem Progress in % auch noch einen String und eine boolsche Variable im Userstate mitgeben. Dazu habe ich mir folgende Klasse angelegt:

namespace XYZProjekt
{
    class UserStateObject
    {
        public string message;
        public bool success;
    }
}

im ProgressChanged Eventhandler des Backgroundworkers mache ich dann prinzipiell folgendes:

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            this.progressBar1.Value = e.ProgressPercentage;            
            UserStateObject uso = (UserStateObject)e.UserState;
            this.textBox1.Text = uso.message;
            this.checkBox1.Checked = uso.success;
        }

jetzt muss ich aber immer bei jedem GUI Zugriff des Backgroundworkers(und das sind sehr viele) eine Instanz von der Klasse UserStateObject erzeugen und diese dann füllen und übergeben.

Geht das nicht irgendwie einfacher? Also ohne jedesmal eine neue Instanz von UserStateObject zu erzeugen?

Viele Grüße
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Viper2000 am .
private Nachricht | Beiträge des Benutzers
Lennart
myCSharp.de - Member



Dabei seit:
Beiträge: 416
Herkunft: Bawü

beantworten | zitieren | melden


this.textBox1.Text = ((UserStateObject)e.UserState).message;
this.checkBox1.Checked = ((UserStateObject)e.UserState).success;
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Viper2000,

nach meinem Verständnis sollte es nur ein UserState-Objekt geben. Ich verstehe nicht, warum du meinst, dass du jedesmal ein neues erzeugen musst. Stattdessen solltest du in das bestehende Objekt den aktuellen Zustand schreiben.

herbivore
private Nachricht | Beiträge des Benutzers
Viper2000
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

beantworten | zitieren | melden

Hallo,

habs jetzt so gemacht: also ich hab das Objekt jetzt nur einmalig in meiner Basisklasse erzeugt und fülle dieses Objekt jeweils in den abgeleiteten Klassen und stopfe es in den ReportProgress. Funktioniert wunderbar :)

Thx
private Nachricht | Beiträge des Benutzers