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
[erledigt] Zeit messen
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 37
Herkunft: Österreich

Themenstarter:

[erledigt] Zeit messen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Jonas007 am .
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden


  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
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.758
Herkunft: Düsseldorf

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Palladin007 am .
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3.754
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
EyeTrackJack
myCSharp.de - Member



Dabei seit:
Beiträge: 35

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers