Laden...

[erledigt] Zeit messen

Erstellt von Jonas007 vor 3 Jahren Letzter Beitrag vor 3 Jahren 950 Views
J
Jonas007 Themenstarter:in
37 Beiträge seit 2020
vor 3 Jahren
[erledigt] Zeit messen

Hallo liebe Community,
ich will folgendes machen: Nach einer zufälligen Zeit zwischen 300 und 3000 Millisekunden soll etwas ausgeführt werden (In diesem Fall eine Ausgabe an der Console). Ich wollte wissen, was an meiner Denkweise falsch ist, bzw. wie man das hier richtig lösen könnte.


            Random random = new Random();
            TimeSpan startAction = new TimeSpan();
            DateTime start = new DateTime();

            startAction = TimeSpan.FromMilliseconds(random.Next(300, 3000));
            start = DateTime.Now + startAction;

            while (true)
            {
                if (DateTime.Now == start)
                {
                    Console.WriteLine("\tHallo Welt");
                    break;
                }
            }

edit: Ich weiß, dass ich es auch mit einem Timer lösen könnte, jedoch würde mich interessieren was an diesem Code programmtechnisch nicht funktioniert

Danke schonmal im voraus!
Mit freundliche Grüßen
Jonas

5.657 Beiträge seit 2006
vor 3 Jahren

  if (DateTime.Now == start)

Dieser Fall mit wird (mit großer Wahrscheinlichkeit) nie eintreten.

Verwende lieber einen Timer.

Weeks of programming can save you hours of planning

2.078 Beiträge seit 2012
vor 3 Jahren

Das funktioniert nicht, weil DateTime in zu kleinen Dimensionen rechnet.
Du hast vermutlich deinen Start schon übersprungen, ohne es zu merken.

Zum Zeit messen ist Stopwatch besser, oder Du nutzt "≥"
Oder eben der Timer

3.825 Beiträge seit 2006
vor 3 Jahren

Oder den bösen Befehl Sleep :

Thread.Sleep(random.Next(300, 3000));

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

E
35 Beiträge seit 2019
vor 3 Jahren

Ich wäre auch für einen Timer. So eine Schleife fühlt sich überhaupt nicht gut an 😉 Mit einem Timer kann man ja dann die Ausgabe erzeugen und gleich das Interval ändern. Finde ich eleganter.