Laden...

Wie kann ich alle aktiven StopWatches zählen?

Erstellt von Capco vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.078 Views
C
Capco Themenstarter:in
4 Beiträge seit 2017
vor 6 Jahren
Wie kann ich alle aktiven StopWatches zählen?

Hallo,

ich fange gerade an C# zu lernen. Zur Zeit versuche ich for/foreach/while loops zu verstehen.

Wie würde ich einen loop zum zählen aktiver (is.running) stopwatches machen?

ich habe mehrere stopwatches:

private readonly Stopwatch watch1 = new Stopwatch(); 
private readonly Stopwatch watch2 = new Stopwatch(); 
private readonly Stopwatch watch3 = new Stopwatch(); 
private readonly Stopwatch watch4 = new Stopwatch(); 

Start/Stop ist kein Problem.

wie kann ich die aktiven zählen? In diesem Beispiel starte ich sie zu verschiedenen Zeitpunkten und immer für X sek. danach setze ich sie wieder auf 0 und starte sie wieder zu einem späteren Zeitpunkt. Ich möchte aber gerne immer einen aktuellen stand der aktiven Stopwatches haben.

Kann mir jemand helfen? Ich hoffe, dass ich verständlich machen konnte, was ich versuche.

Viele Grüße
Capco

T
2.219 Beiträge seit 2008
vor 6 Jahren

Ohne den Rest deines Codes zu sehen, könnte ich mir nicht vorstellen, dass du X StopWatches brauchst.
Zeigt doch mal mit deinem Code, was du genau vor hast.
In der Regel reicht eine StopWatch um die Zeit zu messen.

Ich habe z.B. zum ermitteln von bestimmten Code Laufzeiten eine einfache Klasse geschrieben.
Diese startet beim anlegen eines neuen Objekts dann die StopWatch und beim disposen oder manuellen Stoppen, wird dann die StopWatch gestoppt und ich kann die Zeiten aus der StopWatch ermitteln.
Ob dir dieser Ansatz hilt, kann ich aber wegen fehlendem Code nicht sagen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

3.003 Beiträge seit 2006
vor 6 Jahren

Wenn du einen Überblick über alle Instanzen eines Objekts haben willst, musst du dir eine Liste aller Instanzen eines Objekts anlegen. Eigentlich logisch 😉.


class Example
{
    private List<Stopwatch> _stopwatches = new List<Stopwatch>();
    

    private Stopwatch StartNewStopwatch()
    {
        var result = Stopwatch.StartNew();
        _stopwatches.Add(result);
        return result;
    }

    private IEnumerable<TimeSpan> GetAllElapsed() => _stopwatches.Select(p => p.Elapsed);
}

Im Prinzip braucht man aber nie mehr als eine Stopuhr. Was du tust, ist jemand, der zu einem 100-Meter-Lauf, einem 200-Meter-Lauf und einem 400-Meter-Lauf drei verschiedne Stoppuhren mitbringt.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

C
Capco Themenstarter:in
4 Beiträge seit 2017
vor 6 Jahren

habe einfach folgendes gemacht:

public int WatchCount
{
     get
     {
           int z = 0;
           if (stopwatch1.IsRunning) z++;
           if (stopwatch2.IsRunning) z++;
          return z;
     }
}

tut was es soll. danke 😃

T
2.219 Beiträge seit 2008
vor 6 Jahren

@Capco
Ich bin mir leider nicht sicher, was der eigentliche Sinn dahinter sein soll.
Auch ist deine Benennung von deinen Variablen eine schlechter Stil.
Hier musst du dir, wenn du später auch mal in großen Projekten arbeiten willst, dringend angewöhnen deine Variablen soweit wie möglich sprechend zu benennen.
Im Bestfall wird dann aus dem Namen direkt klar welchen Zweck deine Variable erfüllen soll.

In diesem Fall würde ich z in count umbenennen und deine Property eher "RunningWatchesCount" nennen.
Ist zwar nicht sonderlich elegant, sagt aber schon was die Property liefert.
stopwatch1/2 solltest du passend zu ihren Funktionen benennen, damit auch klar wird, was für Zeiten du damit messen willst.

Ich hoffe, dir helfen die Tipps.
Gerade wenn du später mal größere Projekte selbst entwickelst, dann mal einie Zeit davon eine Pause nimmst und dich dann wieder einarbeiten willst, ist sowohl das benennen der Variablen, methode und Klassen sowie möglichst sinnvolle Kommentare im Code wirklich sehr hilfreich.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.