2009-02-05 3 views
5

Ich beabsichtige, eine kleine Website zu erstellen, die einen Webdienst eines Drittanbieters abfragt, etwa alle 15 Minuten, die gesammelten Daten in einer DB speichert und die Ergebnisse über Webseiten anzeigt.Wie erstelle ich einen Thread, der ständig im Hintergrund auf einer .net-Website ausgeführt wird?

Ich möchte die Umfrage 24 Stunden am Tag mit oder ohne jemand auf der Website besuchen.

Ich weiß, ich könnte eine eigenständige Anwendung erstellen, die auf dem Server ausgeführt werden könnte, aber es gibt eine saubere Möglichkeit, dies in den Website-Code zu integrieren. Ich brauche etwas, das auf einer preiswerten 3rd-Party-Hosting-Site einfach zu implementieren wäre.

Alle Hinweise in die richtige Richtung sind willkommen.

Dank

Antwort

5

eine global.asax-Datei auf Ihrer Website-Projekt hinzufügen.

Dadurch erhalten Sie vier Ereignishandler, von denen einer beim Laden der Anwendung verwendet wird.

Sie können Ihren Thread hier abfeuern.

Darüber hinaus empfehle ich, dass Sie die Threads auf Hintergrund festlegen, sodass Sie sie beim Schließen Ihrer Webanwendung verschwinden lassen können.

System.Threading.Thread.CurrentThread.IsBackground = true; 
+0

Wäre dieser Thread von der automatischen Webserver-Verwaltung betroffen (Thread-/Prozessrecycling)? – Tomalak

+0

Wenn der Prozess wiederverwendet wird, wird der Thread beim Neustart der Anwendung ausgelöst. – Spence

+0

Danke für die Antwort. Sieht aus wie eine perfekte Lösung ist nicht verfügbar, wenn Sie cheep 3rd Party Hosting verwenden, aber das sollte für meinen Zweck funktionieren. – Magpie

3

Sie müssen idealerweise einen Windows-Dienst erstellen, um dies zu tun. Der andere Vorschlag, Threads vom Anwendungsstart an zu erstellen, ist in Ordnung, bis der Webserver neu gestartet wird.

An diesem Punkt wird Ihre Hintergrundaufgabe nicht gestartet, bis die nächste Person die Site besucht. Mit einem Windows-Dienst werden die Hintergrundaufgaben wieder gestartet, sobald der Server hochfährt.

einen Windows-Dienst erstellen .NET ist ziemlich einfach, sicherlich viel einfacher, als es vor .net war:

http://www.codeproject.com/KB/system/WindowsService.aspx

Sie könnten natürlich die andere Lösung frisieren von etwas zu bekommen, um zu laufen Hit Ihre Website, nachdem der Server startet, aber das ist Hacky und der "richtige" Weg ist ein Windows-Dienst.

Edit:

Das hat mich lehren wird die Frage richtig zu lesen, nicht die Anforderung vor Ort hatte auf einem billigen Hostern zu arbeiten. Die andere Lösung ist wahrscheinlich das Beste, auf das Sie in diesem Fall hoffen können, da der Windows Service-Ansatz mit ziemlicher Sicherheit nicht möglich ist.

+0

Danke für die Antwort. Obwohl für mein Problem nicht anwendbar, haben Sie dennoch einige sehr nützliche Informationen zur Verfügung gestellt. – Magpie

+0

Ist es möglich, dass der Windows-Dienst eine Einstellung in der ASP.NET-App aktualisiert, während beide ausgeführt werden? –

Verwandte Themen