myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Table Adapter füllen, ohne dass das GUI blockiert
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

geschlossen (weitere Infos)
Zum Ende der Seite springen  

Table Adapter füllen, ohne dass das GUI blockiert

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
GNewmann GNewmann ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.01.2006
Beiträge: 90


GNewmann ist offline

Table Adapter füllen, ohne dass das GUI blockiert

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Liebe myCSharp Gemeinde,

ich habe ein Problem dass ich leider nicht selbständig lösen kann.. (ich gebe zu Threading ist wirklich nicht meine Stärke).

Meine Software lädt zu beginn diverse Text-Boxen sowie List-Boxen über eine Binding Source.

Beim Main_Load greife ich dann zu Beginn auf meine Methode "fill_ListView" um z.B. alle meine List Views mit Daten zu füllen.

Dies dauert (bedingt an der Datenmenge) 2-3 Sekunden. Hier würde ich gerne User- freundlich eine kleine TextBox mit ggf. Ladebalken anzeigen, bis alle Controls mit Daten gefüllt sind.

Ich habe versucht die Methode über einen Invoke aufzurufen.. in diesem Invoke rufe ich dann eine Form auf, die mir eine Meldung "bitte warten" anzeigt. Nach dem CheapGUIAccess lasse ich in meiner ursprünglichen Form die Methode aufrufen um die Felder zu füllen.. leider ohne Erfolg, die Felder bleiben "Daten" - leer.

Hier ein Codeauszug:

C#-Code:
        private void Main_Load(object sender, EventArgs e)
        {
            this.pe_import_histTableAdapter.Select(this.pEDataSet.pe_import_hist);
            System.Threading.ThreadPool.QueueUserWorkItem(startProcesses);
        }

        void DoCheapGuiAccess()
        {
            if (InvokeRequired)
            {
                Invoke(new MethodInvoker(DoCheapGuiAccess));
                return;
            }
            myLoader.Show();
        }



        public void startProcesses(Object dummy)
        {
            DoCheapGuiAccess();
            fill_TableAdapter();
        }

Vielen Dank für jeglichen Hinweis / Hilfe.

Grüße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von GNewmann am 01.03.2011 18:14.

01.03.2011 18:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.474
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo GNewmann,

wie schon in  [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke) und  [FAQ] Warum blockiert mein GUI? beschrieben, müssen die langlaufenden Aktionen im Worker-Thread und die GUI-Zugriffe im GUI-Thread laufen. Bei dir geht das noch Kreuz und Quer. Wenn fill_TableAdapter() auf Controls zugreift und so klingt das, darfst du die Methode nicht aus dem Worker-Thread heraus aufrufen. Anderseits kannst du dir den Klimmzug mit dem Show komplett sparen, wenn du das Show einfach vor dem QueueUserWorkItem aufrufst. Das TableAdapter.Select muss dagegen in den Worker-Thread.

herbivore
02.03.2011 09:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 9 Jahre.
Der letzte Beitrag ist älter als 9 Jahre.
geschlossen (weitere Infos)


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 28.05.2020 19:55