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
Infos anzeigen mittels Timer
padde77
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

Infos anzeigen mittels Timer

beantworten | zitieren | melden

Hallo,

ich möchte auf einem Form verschiedene Infomeldungen anzeigen lassen. Jedoch ist die Anzahl der Meldungen variabel.


Utils.FülleInfoQueue();
bsiInfo.Stop();
for (int i = 0; i < Globals.InfoQueue.Count; i++)
{
      bsiInfos.Caption = Globals.InfoQueue[i];                
}
bsiInfo.Start();

bsiInfo ist hierbei mein Haupttimer, der macht noch andere Sachen.
Globals.InfoQueue ist meine Liste von strings, welche angezeigt werden soll mit je 5 Sekunden pro Element.
Jetzt stehe ich nur grad ein wenig auf dem Schlauch, wie ich in der for-Schleife die Elemente abarbeiten kann.
Hätte da jemand einen Schubs in die richtige Richtung für mich?

Danke
Patrick
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von padde77 am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15806
Herkunft: BW

beantworten | zitieren | melden

Als Hinweis: sowas wie globale Klassen ist ein sehr deutlicher Hinweis auf ein Fehler in der Softwarearchitektur!
Sowas ist kaum orderntlich wartbar geschweige denn testbar!

Wie eine for-Schleife funktioniert, das kannst Du ganz einfach der Doku entnehmen:
for (C# Reference)

Ansonsten der Hinweis, dass es nicht unbedingt die beste Idee ist a) Quellcode in Deutsch zu entwickeln und b) dafür sogar Umlaute zu verwenden - auch wenn es theoretisch geht.
private Nachricht | Beiträge des Benutzers
padde77
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

Hi,

danke erst mal für deine Infos.
Globale Klassen sind es eher nicht, sondern eigentlich nur ein paar Strings u.ä. welche in verschiedenen Funktionen verwendet werden.
Wie die for-Schleife funktioniert, ist klar. Jedoch möchte ich nach jedem Durchlauf der Schleife 5 Sek. Pause machen und das Element i anzeigen. Thread.Sleep blockt aber die ganze GUI.

Warum sollte ich nicht die Funktionen auf deutsch benennen? Ist eine ernst gemeinte Frage.
Umlaute verstehe ich.

Dank dir.
Patrick
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15806
Herkunft: BW

beantworten | zitieren | melden

Ich hab von "bester Idee", nicht von "sollte" gesprochen.
Beste Idee, weil das eben sehr ungewöhnlich ist und oft eine Zusammenarbeit mit anderen/neuen Kollegen erschwert.

Code, den man oft aus anderen Quellen übernimmt, ist Englisch. Von der Tatsache, dass andere SDKs, Frameworks und Bibliotheken eben auchin Englisch geschrieben sind.
Damit hast Du einen Deutsch-Englisch-Quellcode... und das ist alles andere als toll.


Eine Pause in diesen Sinne ist so nicht so einfach möglich.
Entweder Du nimmst dazu einen Timer, um ein Delay zu erzeugen, oder Du musst das in einen extra Task/Threads auslagern.
Alles andere blockiert eben die UI.
private Nachricht | Beiträge des Benutzers
Deaktiviertes Profil
myCSharp.de - Member



Dabei seit:
Beiträge: 996

beantworten | zitieren | melden

Dann zeig doch mal die Definition von Globals. Ist das keine Klasse?

Das ist die globale Klasse, die gemeint ist.
private Nachricht | Beiträge des Benutzers
padde77
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

@Abt
Da geb ich dir Recht, deutsche und englische Bezeichnungen zu verwenden, ist natürlich Mist. Danke für den Tip!
Werde es dann wohl über einen 2. Timer laufen lassen müssen.

@Sir Rufo
Ja, die Globals ist eine Klasse. Wie kann ich das besser machen?

Dank euch
Patrick
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4026

beantworten | zitieren | melden

Du mußt den Code zum Anzeigen in die Timer-Ereignismethode (Tick) unterbringen und dort dann einen Zähler (als Klassenmember) verwenden, welcher jeweils um 1 hochzählt (also keine Schleife verwenden).
private Nachricht | Beiträge des Benutzers
padde77
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

beantworten | zitieren | melden

Th69
Dank dir, hab ich so gemacht, funktioniert.
Merci und Gruß
Patrick
private Nachricht | Beiträge des Benutzers