Announcement

Collapse
No announcement yet.

System.timers.timer Klasse funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • System.timers.timer Klasse funktioniert nicht

    Hallo

    Ich will in einem Webform eine bestimmte Methode immer nach einem bestimmten Zeitintervall automatisch aufrufen lassen. Dazu habe ich mit der System.timers.timer Klasse experimentiert. Ich bin nach dem Beispiel in der Visual Studio Hilfe vorgegangen dennoch funktioniert der automatische Aufruf einfach nicht. Es soll alle 20 Sekunden die Methode "postma()" aufgerufen werden. Da die Methode keine Argumente haben darf, kann ich sie nicht vom Timer direkt ausführen lassen und lasse sie deshalb von der Methode "aktualisieren", also über einen Umweg ausführen. Mein Code sieht so aus:

    Imports System.timers

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim aTimer As New System.Timers.Timer()
    AddHandler aTimer.Elapsed, AddressOf aktualisieren

    aTimer.Interval = 20000

    aTimer.Enabled = True

    aTimer.AutoReset = True

    End Sub

    Public Sub aktualisieren(ByVal source As Object, ByVal e As ElapsedEventArgs)

    postma()

    End Sub

    Private Sub postma()

    End Sub

    Kann mir jemand sagen, woran es liegt, dass es nicht funktioniert? Als Alternative würde es mir auch weiterhelfen, wenn ich wüsste, wie man einen Button alle 20 Sekunden automatisch klickenlässt oder ob es noch andere Möglichkeiten gibt, derartige Zeitintervalle einzubauen.

    Vielen Dank

  • #2
    das bist du hier genau richtig!

    das dot.net magazin hat diese problematik mal behandelt in der ausgabe 5/03

    quellcode kannst du hier bei entwickler.com runterladen:

    http://entwickler.com/itr/psecom,id,32,nodeid,32.html

    unter Controls .NET Ausgabe: 05.2003 quelltexte anklicken:

    artikel:
    Da fehlt doch was?! (Karsten Samaschke)
    ASP.NET Custom Controls - Teil 1 (S. 41)

    ich habs in c# umgeschrieben - hat mir sehr geholfen!

    steffe

    Comment


    • #3
      Ich habe diese Lösung ausprobiert. Das Problem ist, dass sie nicht so funktioniert wie sie soll. Beim Erstellen gibt es keine Fehlermeldung, das Programm funktioniert wie sonst nur davon, dass in einem bestimmten Zeitintervall etwas passiert, davon ist nichts zu sehen.

      Ich muss einfach eine Seite in einem bestimmten Zeitintervall aktualisieren können.
      Ein Mitarbeiter hat mir den Tipp gegeben, die Aktualisierung mit dem HTML-Code des Webforms durchzuführen. Der entsprechende html-Code ist: META HTTP-EQUIV=Refresh CONTENT="10; URL=http://www.htmlhelp.com/"
      Diese Lösung funktioniert natürlich einwandfrei, nur muss ich das Zeitintervall aus der Datei Web.config auslesen und irgendwie in den HTML-Code schreiben können, damit das Zeitintervall jederzeit konfigurierbar bleibt.

      Das wäre eine weitere Lösung für mein Problem. wenn also jemand weiss wie das geht...? ;

      Comment


      • #4
        bei mir hat der javascript-timer ohne probs funktioniert...nach der von mir eingestellten zeit sein elapsed-event ausgelöst...aber ist nun schwierig, aus der ferne zu beurteilen, was da bei dir nicht hinhaut.

        aber zu plan b:

        dein meta-tag muss eine id und das runat="server"-attribut bekommen - ausserdem muss es xml-konform geschlossen werden:

        <meta id="meta_Refresh" runat="server" http-equiv="Refresh" content="10; URL=http://www.htmlhelp.com/"></meta>

        im codebehind musst das das meta-tag deklarieren:

        protected System.Web.UI.HtmlControls.HtmlGenericControl meta_Refresh;

        und dann kannst du im Page_Load-Event darauf zugreifen und schreiben...z.b.:

        meta_Refresh.Attributes["content"] = "5; URL=http://www.entwickler.com";

        probier mal!

        steffe

        Comment


        • #5
          Super! Danke :-)

          Hat einwandfrei funktioniert!
          Die VB.net Syntax inklusive auslesen aus der Web.config sieht so aus:

          meta_Refresh.Attributes.Item(4) = Configuration.ConfigurationSettings.AppSettings.It em("intervall") & "; URL=http://www.entwickler.com"

          Der HTML-Editor von Visual Studio behauptet zwar, dass der meta-Tag kein Attribut "ID" haben kann aber wenn man es einfach einträgt dann beschwert sich keiner :-)

          btw... Steffen hast du mal bei Inso in Karlsruhe gearbeitet? Dein Name kommt mir bekannt vor

          Comment


          • #6
            jo, der editor ist da sehr unflexibel - aber egal, er kann ja trotzdem alles compilieren...

            schön, dass es klappt! :-)

            btw...neh, im moment müssen die armen leuts im sachsenlande meine berliner schnauze ertragen - in karlsruhe hab ich noch nicht gearbeitet...

            steffe

            Comment

            Working...
            X