C# Timer/Countdown o.ä.

Hyperion

Grünschnabel
Guten Tag,

ich stelle meine Frage hier, weil ich selbst langsam mit meinem Latein am Ende bin. Ich entwickle eine Webapplikation mit ASP.NET und C# als Sprache. Innerhalb der Applikation soll überwacht werden, wielange sie schon läuft und bei einem bestimmten Zeitwert (ist in Variable als Minuten gespeichert) soll eine Aktion durchgeführt werden (Applikation beenden).

Im Grunde klang das für mich nach einer einfachen Aufgabe aber ich musste feststellen, dass das nicht so einfach ist, wenn man keine Ahnung hat, wonach man suchen muss. Meine gedanklichen Ansätze:

  • Javascript als Zähler und dann Abfang mit C# --> gescheitert am JS/C# Interface
  • Multithreading, zweiter Thread als Zeitzähler, der MainThread abbricht, wenn Zeit abgelaufen
  • Irgendwas mit DateTime von C# ... aber da komm ich nur auf eine Buttongesteuerte Zeitmessung, keine Überwachung

Kann mir jemand helfen? Ich bräuchte am besten eine Lösung :) Ein guter Ansatz würd mich aber auch schon glücklich machen :)

Viele Grüße
Jan
 
Nach weiterer Literaturrecherche ( :) ) bin ich auf folgende Lösung (dachte ich zumindest) gestossen:

Code:
    protected void pbewerten(object sender, EventArgs e)
    {
        int PID = Convert.ToInt32(pliste.SelectedValue);
        projekteTableAdapter p_a = new projekteTableAdapter();
        DataSet1.projekteDataTable projekte = p_a.GetDataBy(PID);
        pbeschreibung_lit.Text = projekte[0].beschreibung;
        BewiView.SetActiveView(Bewertung);
        /*Timer starten*/
        timer.Interval = 10000;//(Convert.ToInt32(projekte[0].zeit)*60*1000)%3; //drittel der projektzeit checken        
        timer.Elapsed += new ElapsedEventHandler(timer_elapsed);
        timer.AutoReset = true;
        timer.Enabled = true;
        timer.Start();
        ampelphase.CssClass = "g50";
    }

    void timer_elapsed(object sender, ElapsedEventArgs e)
    {
        ampelcount++;
        if (ampelcount == 1) ampelphase.CssClass = "n50";
        if (ampelcount == 2)
        {
            ampelphase.CssClass = "r50";
            timer.Stop();
        }
    }

Zu meinem Bedauern musste ich feststellen, dass nach "ampelphase.CssClass = "g50";" nicht mehr weiterformatiert wird. Im Debugging habe ich über eine Breakpoint-Analyse gemerkt, dass der Eventhandler durchaus angesprungen wird.

(Im Grunde muss jetzt also nur noch das CSS neu geladen werden ... jemand Ideen?)
edit: auch andere Änderungen an dem Buttonen (Beschriftung) werden nicht übernommen. Zu Hülf!

Grüße
Jan
 
Zuletzt bearbeitet:
Was für einen Timer benutzt du denn da bei deiner Seite..?

Du weisst schon, dass wenn eine Seite mal zu ende geladen hat, über ASP.net nichts mehr geändert werden kann. Ausser natürlich über Ajax. Das könntest dir mal ansehen.

lg,..
 
Alexander Schuc hat gesagt.:
Was für einen Timer benutzt du denn da bei deiner Seite..?
Diesen hier benutze ich:
Code:
System.Timers.Timer timer = new Timer();

Der Timer aus dem System.Windows... steht mir laut Debugger nicht zur Verfügung. Das war mein erster Versuch.

Alexander Schuc hat gesagt.:
Du weisst schon, dass wenn eine Seite mal zu ende geladen hat, über ASP.net nichts mehr geändert werden kann. Ausser natürlich über Ajax. Das könntest dir mal ansehen.

lg,..

Nein, weiß ich nicht ... aber jetzt :(
AJAX ist mir als Schlagwort bekannt und auch das _sehr grobe_ gedankliche Konstrukt, was dahinter steckt. Von jeglicher praktischer Anwendung bin ich aber weit entfernt. Könntest du mir für mein spezifisches Problem einen Tipp geben, wie ich hier weiterkomme?

Grüße
Jan
 
Es hat mir zumindest ermöglicht, die notwendigen Komponenten zu installieren und mal einen kleinen Überblick zu bekommen. Das UpdatePanel wäre schon eine schöne Sache ... nur hb ich leider nicht die Möglichkeit meine WebSite auf "Ajax-Enabled" umzustellen, da der Aufwand dazu zu hoch wäre :(
 

Neue Beiträge

Zurück