Laden...

Wie kann ich eine for-Schleife zeitversetzt durchlaufen?

Erstellt von Michael1995 vor 3 Jahren Letzter Beitrag vor 3 Jahren 964 Views
M
Michael1995 Themenstarter:in
22 Beiträge seit 2020
vor 3 Jahren
Wie kann ich eine for-Schleife zeitversetzt durchlaufen?

Servus zusammen,

Habe ein Array an Sätzen erstellt (Notions, hier 10 Stück).

Bevor ich ein neues Notion-Objekt erstellen will, will ich nun z.B. 100ms warten.
Wie kann ich dies in die for-Schleife implementieren?
Habe mich da schon mit der Timer-Klasse etwas "gespielt".

Mein bisheriger Versuch:


 Notion[] NotionArr = new Notion[10];

            Timer t1 = new Timer();
            t1.Interval = 100;

            for (int i = 0; i < NotionArr.Length; i++) {
                NotionArr[i] = new Notion();
                Console.WriteLine(NotionArr[i]);
                t1.Start();
                t1.Stop();
            }
            Console.ReadKey();

6.911 Beiträge seit 2009
vor 3 Jahren

Hallo Michael1995,

eleganter wie mit dem Timer geht es mit Tasks:


private static async Task FillNotionsAsync(IList<Notion> notions)
{
    for (int i = 0; i < notions.Count; ++i)
    {
        await Task.Delay(100).ConfigureAwait(false);
        notions[i] = new Notion();
    }
}

od. falls du C# 8 verwenden kannst


private static async IAsyncEnumerable<Notion> CreateNotionsAsync(int count)
{
    for (int i = 0; i < count; ++i)
    {
        await Task.Delay(100).ConfigureAwait(false);
        yield return new Notion();
    }
}

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

M
Michael1995 Themenstarter:in
22 Beiträge seit 2020
vor 3 Jahren

Cool danke für deine Antwort.

aber eine so simple Anweisung, dass die Intvervall-Zeit abläuft, und dann erst der nächste Schleifendurchlauf anfängt, gibt es nicht?

Probiere diese Lösung mal aus, habe leider keine Erfahrung mit Asynchronen Methoden

C
2.121 Beiträge seit 2010
vor 3 Jahren

Es gibt Thread.sleep. Sollte man allerdings nicht im Hauptthread verwenden.
Und nachdem es komplexe Konstrukte gibt bei denen man mehrmals hinschauen muss um sie zu verstehen, ist etwas einfaches ja sowieso nicht mehr gewünscht 😃

M
Michael1995 Themenstarter:in
22 Beiträge seit 2020
vor 3 Jahren

danke, für meinen Zweck vollkommen ausreichend.

Hinweis von Abt vor 3 Jahren

Keine Full Quotes
[Hinweis] Wie poste ich richtig?