Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Prism Timer unter ASP.NET (https://www.delphipraxis.net/60858-timer-unter-asp-net.html)

Turbo30 13. Jan 2006 09:09


Timer unter ASP.NET
 
Hi
Ich habe eine kleine ASP.NET Anwendung mit Delphi2005 geschrieben, die nur 1 Seite mit 2 DataGrids enthält. Die Grids sollen zykl. aus verschiedenen MS-SQL Tabellen aktualisiert werden. Die Anwendung enthält eine proc die die Aktualisierung ausführt.
Das ich den "System.Timers.Timer" nicht zum Laufen bringe, aktualisiere ich die Seite über <meta refresh content=....>
Funktioniert soweit tadellos hat aber den Nachteil, dass nach einigen Stunden der IIS (V6, V5.1 egal) den ganzen Server-Rechner abschießt (MEM >>) :cry:

Beim Aufruf über der Proc über einen Button stellt sich der Speichereffekt nicht ein. Wie bringt man den Timer zum Laufen.
"Start" oder "Enabled=True" hat keinen Effekt.

Phoenix 13. Jan 2006 09:16

Re: Timer unter ASP.NET
 
Gar nicht. Wie soll denn das auch gehen? Der Timer wird erstellt, die HTML-Seite wird an den Client ausgeliefert und alle Objekte (die existieren ja nur auf dem Server) werden wieder zerstört.

Um es kurz zu sagen: Dein Timer existiert nur beim Erstellen der Webseite, nicht mehr, wenn sie angezeigt wird.

Was Dein 'Phänomen' angeht: Drückst Du den Button, so wird die aktuelle 'Session' weiterbenutzt. Beim refresh-Header fehlt dem Server bei der neuen Anfrage vom Browser die Session-Id und er erstellt eine neue Session die wieder neuen Speicher braucht. Warum die alten Sessions nach einer gewissen Zeit jedoch nicht aufgeräumt werden weiss ich jetzt spontan auch nicht.

Ich würde das so lösen: Du erstellst einen Button und füllst die Seite zusätzlich noch mit einem Javascript-Timer. Somit hast Du Deinen Timer auf dem Client (wo er ja auch hin muss) und nach n Minuten drückt das JavaScript einfach auf den Button.

Damit hast Du das Session- / Speicherproblem nicht mehr und den automatischen Refresh realisiert.

Edit Nachtrag:
Noch ne andere Idee:

Du erstellst einfach einen Webservice, der 2 DataSets als Antwort ausliefert. Dann programmierst Du eine normale Windows.Forms-Anwendung mit 2 Grids die einen Timer hat, im Timer-Event den Webservice abfragt und die neu empfangenen DataSets mit den alten austauschst. Das erfordert kein JavaScript auf dem Client-Browser.
Natürlich braucht der Client dann ein Windows.Forms fähiges .NET Framework wie z.B. dotGNU auf MacOS X oder Linux, aber das dürfte wohl die elegantere Lösung sein.

Edit Nachtrag 2:
:lol: Manchmal gibts zufälle. Hab gerade nach einer Lösung für mein akutes Problem gesucht und dabei noch eine Lösung zu Deinem gefunden. Mein Javascript-Ansatz war gar ned so doof. Hier ein Beispiel aus dem Code Project: http://codeproject.com/aspnet/autopostback.asp

Turbo30 14. Jan 2006 11:16

Re: Timer unter ASP.NET
 
Schönen Dank für die prompte Anwort. Klar, dass mit dem Timjer leuchtet ein.
Werde mich mal mit der Java-Lösung beschäftigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz