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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Dann zeig doch mal die Definition von Globals
. Ist das keine Klasse?
Das ist die globale Klasse, die gemeint ist.
@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
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).