Laden...

Infos anzeigen mittels Timer

Erstellt von padde77 vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.199 Views
P
padde77 Themenstarter:in
50 Beiträge seit 2011
vor 6 Jahren
Infos anzeigen mittels Timer

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

16.807 Beiträge seit 2008
vor 6 Jahren

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.

P
padde77 Themenstarter:in
50 Beiträge seit 2011
vor 6 Jahren

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

16.807 Beiträge seit 2008
vor 6 Jahren

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.

D
985 Beiträge seit 2014
vor 6 Jahren

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

Das ist die globale Klasse, die gemeint ist.

P
padde77 Themenstarter:in
50 Beiträge seit 2011
vor 6 Jahren

@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

4.931 Beiträge seit 2008
vor 6 Jahren

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).

P
padde77 Themenstarter:in
50 Beiträge seit 2011
vor 6 Jahren

Th69
Dank dir, hab ich so gemacht, funktioniert.
Merci und Gruß
Patrick