2009-02-05 10 views
5

Zamierzam zbudować małą stronę internetową, która będzie odpytywać serwis internetowy strony trzeciej, powiedzmy co 15 minut, przechowuj zebrane dane w db i wyświetlaj wyniki na stronach internetowych.Jak utworzyć wątek, który działa cały czas w tle w witrynie sieci Web .net?

Chcę, aby głosowanie odbywało się 24 godziny na dobę, niezależnie od tego, czy ktoś odwiedza stronę.

Wiem, że mogę utworzyć samodzielną aplikację, która może działać na serwerze, aby to zrobić, ale czy istnieje czysty sposób włączenia tego kodu do witryny. Potrzebuję czegoś, co będzie łatwe do wdrożenia na stronie hostingowej strony trzeciej.

Wszystkie wskaźniki we właściwym kierunku będą mile widziane.

Dzięki

Odpowiedz

5

Dodaj plik global.asax do projektu swojej strony.

To daje cztery programy do obsługi zdarzeń, z których jeden jest używany podczas ładowania aplikacji.

Możesz wystrzelić swoją nitkę tutaj.

Ponadto zalecam ustawienie wątków w tle, aby można je było zignorować po zamknięciu aplikacji internetowej.

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

Czy na ten wątek wpłynęłoby automatyczne utrzymywanie serwera WWW (recykling wątków/procesów)? – Tomalak

+0

, jeśli proces zostanie poddany recyklingowi, wątek zostanie uruchomiony po ponownym uruchomieniu aplikacji. – Spence

+0

Dzięki za odpowiedź. Wygląda na to, że idealne rozwiązanie nie jest dostępne, gdy korzystasz z taniego hostingu stron trzecich, ale powinno to zadziałać zgodnie z przeznaczeniem. – Magpie

3

W tym celu należy utworzyć usługę Windows. Druga sugestia tworzenia wątków z uruchamiania aplikacji jest w porządku, dopóki serwer nie zostanie ponownie uruchomiony.

W tym momencie zadanie w tle nie zostanie uruchomione, dopóki następna osoba nie odwiedzi strony. W usłudze systemu Windows zadania w tle będą uruchamiane ponownie zaraz po uruchomieniu serwera.

Tworzenie usługa systemu Windows przy użyciu .NET jest dość prosta, z pewnością o wiele łatwiejsze niż to było wcześniej .net:

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

Można oczywiście Fudge Innym rozwiązaniem dostając coś biec do uderzył w twoją stronę po uruchomieniu serwera, ale to jest hacky, a "prawidłowym" sposobem jest usługa Windows.

Edit:

To mnie nauczy przeczytać pytanie poprawnie, nie dostrzec wymóg o pracę na tanim udostępnionym hosta. Drugie rozwiązanie jest prawdopodobnie najlepsze, na co można mieć nadzieję w tym przypadku, ponieważ podejście Windows Service prawie na pewno nie jest możliwe.

+0

Dzięki za odpowiedź. Chociaż nie dotyczy mojego problemu, nadal dostarczyłeś bardzo przydatne informacje. – Magpie

+0

Czy jest możliwe, aby usługa Windows zaktualizowała ustawienie w aplikacji ASP.NET, gdy obie są uruchomione? –

Powiązane problemy