Hi Leute,
ich bin momentan an einem Projekt drann, wo ich merke das ich langsam ohne Threading nicht auskommen werde. Ich denke das ich das Thema Threading verstanden habe, aber ich weiss leider nicht wie ich das an meinem Fall sinvoll anwenden kann. Code ist in C#. Bitte verschieben sollte es nicht hier reinpassen.
Ich habe zwei Methoden.
Die erste Methode macht nicht anderes als über php informationen zu holen. Dient also nur zur Aktualisieren von Informationen im Programm.
Die zweite Methode hingegen bezieht sich nur auf das aktualisieren der Controls. Sprich, ich starte Methode eins - hole mir also den aktuellsten Stand ausm www. Anschließend möchte ich den neuen Stand in meinen Controls anzeigen.
Das momentane Problem ist, dass das durchlaufen der Methode zwei einfach zu lange dauert und somit die ganze Form blockiert. Methode eins habe ich bereits in einem Thread ausgelagert und läuft recht fix durch. Nur muss ich auch drauf achten das Methode eins durchgelaufen sein muss bevor ich die zweite aufrufe.
So und jetzt zur Frage. Wie kann ich die zweite Methode so aufrufen das sie performant durchgelaufen wird ohne das die Form einfriert?
Hier noch bisschen code...
Thread verschoben
ich bin momentan an einem Projekt drann, wo ich merke das ich langsam ohne Threading nicht auskommen werde. Ich denke das ich das Thema Threading verstanden habe, aber ich weiss leider nicht wie ich das an meinem Fall sinvoll anwenden kann. Code ist in C#. Bitte verschieben sollte es nicht hier reinpassen.
Ich habe zwei Methoden.
Die erste Methode macht nicht anderes als über php informationen zu holen. Dient also nur zur Aktualisieren von Informationen im Programm.
Die zweite Methode hingegen bezieht sich nur auf das aktualisieren der Controls. Sprich, ich starte Methode eins - hole mir also den aktuellsten Stand ausm www. Anschließend möchte ich den neuen Stand in meinen Controls anzeigen.
Das momentane Problem ist, dass das durchlaufen der Methode zwei einfach zu lange dauert und somit die ganze Form blockiert. Methode eins habe ich bereits in einem Thread ausgelagert und läuft recht fix durch. Nur muss ich auch drauf achten das Methode eins durchgelaufen sein muss bevor ich die zweite aufrufe.
So und jetzt zur Frage. Wie kann ich die zweite Methode so aufrufen das sie performant durchgelaufen wird ohne das die Form einfriert?
Hier noch bisschen code...
C#-Quellcode
- private void btnAktualisieren_Click(object sender, EventArgs e)
- {
- //Alles aktualisieren
- Thread tAkt = new Thread(new ThreadStart(timerAktualisieren));
- tAkt.Start();
- layoutLaden();
- }
- //Methode eins
- private void timerAktualisieren()
- {
- benutzer.GetProfil();
- benutzer.GetClan();
- benutzer.GetTeams();
- benutzer.GetShoutbox();
- benutzer.GetMitglieder();
- }
- // Methode zwei
- private void layoutLaden()
- {
- layoutAdmin();
- layoutBNachrichtenLaden();
- // Header
- lblBenutzername.Text = benutzer.benutzer_name;
- lblLetzterLogin.Text = "Letzer login war am " + benutzer.benutzer_login.ToString("dd.MM.yyyy HH:mm:ss");
- lblStartseiteLetzterLogin.Text = "war am " + benutzer.benutzer_login.ToString("dd.MM.yyyy");
- lblStartseiteNachrichten.Text = (gridClanNachrichten.Rows.Count +
- gridMeineNachrichten.Rows.Count).ToString() + " Nachrichten";
- lblRegistriertSeit.Text = "Seit " + benutzer.benutzer_registrierung.ToString("dd.MM.yyyy") + " registriert";
- picAvatar.BackgroundImage = benutzer.benutzer_avatar;
- lblClanname.Text = benutzer.clan_name + " [" + benutzer.clan_kuerzel + "]";
- lblZuletztAktualisiert.Text = "Zuletzt aktualisiert um " + DateTime.Now.ToString("HH:mm:ss")+" Uhr";
- lblVersion.Text = "v"+Application.ProductVersion.ToString();
- [.....]
- }
Thread verschoben
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „FlashTek“ ()