Laden...

Wie am besten viele Aufgaben implementieren (mit zeitlichen abständen)

Erstellt von Rudy_Mentaire vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.680 Views
R
Rudy_Mentaire Themenstarter:in
4 Beiträge seit 2012
vor 11 Jahren
Wie am besten viele Aufgaben implementieren (mit zeitlichen abständen)

Hallo,

meine Frage ist wie man am besten mit vielen Methoden umgeht, die aber zeitlich getimt sein müssen.

Aktuell habe ich es so:
(pseudocode)

meinnamespace()
{

           public int status;
           main()
           {
           status = 0;
           starte timer()
           }

           timerevent (....)
           {
                  if (status == 0)
                  {
                          stoppe timer;
                          öffne den internetexplorer;

                          status = 1;
                          timer.interval = 20000;
                          starte timer;
                  }
                  else if (status == 1)
                  {
                          stoppe timer;
                          schick was an den internetexplorer;

                          status = 2;
                          timer.interval = 2000;
                          starte timer;
                  }
                  else if (status == 2)
                  {
                          stoppe timer;
                          mach nen screenshot vom internetexplorer;

                          status = 3;
                          timer.interval = 2000;
                          starte timer;
                  }
                  else if (status == 3)
                  {
                          und so weiter
                  }
        }
}

Problem ist, das ich für status inzwischen über 100 Zustände hab und das leicht unübersichtlich wird (zwischendurch musste ich dann auch noch Zustände einfügen, die dann Zahlen haben wie 903 etc).

die einzelnen if abfragen sind inzwischen schon in Funktionen, die ich aber verkehrt rum aufrufen muss, da sonst von einem if ins nächste gesprungen wird ohne den Timer abzuwarten.

Inzwischen bennene ich die Stati auch schon mit 5er Schritten, aber das kann doch nicht die optimale Lösung sein?

W
16 Beiträge seit 2010
vor 11 Jahren

Hallo,

grundsätzlich verwende ich bei sowas switch - case

Ob das performanter ist, kann ich jetzt auch nicht sagen

Gruß
Bernd

799 Beiträge seit 2007
vor 11 Jahren

Da du einen Automaten programmieren musst, wäre es vielleicht ganz gut wenn du die Zustände als Objekte abbildest und die Zustandsübergänge darin modellierst.

Das bläst zwar den Code ein wenig mehr auf aber es bleibt übersichtlicher. Vor allem wenn du in deinen State-Objekten schön modellierst zu welchen Zuständen sie übergehen können.

Eine andere Möglichkeit wäre auf die Workflow-Foundation zu setzen. Die schafft das auch.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
R
Rudy_Mentaire Themenstarter:in
4 Beiträge seit 2012
vor 11 Jahren

@wassermann
Switch Case wär zwar eine Option, die würde dann aber trotzdem alle status zustände explizit abfragen. Das würde allerdings schonmal mein if / else problem mit dem verkehrtrumen aufrufen der zustände lösen.

@der-schlingel
werd mir das ma näher anschauen, danke

2.187 Beiträge seit 2005
vor 11 Jahren

Hallo Rudy_Mentaire,

der-schlingel sagte es ja schon, aber ich wollte den Namen des Entwurfsmusters noch nachreichen: Zustand/State-Patern

Gruß
Juy Juka

W
872 Beiträge seit 2005
vor 11 Jahren

Status sollte am besten ein enum werden, dass Du dann mit Switch auswerten kannst.
So bekommst Du dann sprechenden Code - oder willst Du jedesmal ueberlegen, was Zustand 007 logisch bedeutet?

2.187 Beiträge seit 2005
vor 11 Jahren

Hallo weismat,

bei sovielen Werten und da sich die Liste ja offensichtlich erweitert, ist ein Enum nicht sonderlich sinnvoll. Ein State-Patern ist da einfach gleichzeitig erweiterbar und lesbar.
Siehe auch meinen vorherigen Post und der Post von der-schlingel.

Gruß
Juy Juka