2009-02-05 7 views
5

Intendo costruire un piccolo sito Web che eseguirà il polling di un servizio Web di terzi, ad esempio ogni 15 minuti, memorizza i dati raccolti in un db e visualizza i risultati tramite pagine Web.Come posso creare un thread che viene eseguito tutto il tempo in background in un sito Web .net?

Desidero che il polling venga eseguito 24 ore al giorno con o senza nessuno che visita il sito web.

So che potrei creare un'applicazione stand alone che potrebbe essere eseguita sul server per farlo, ma c'è un modo pulito per incorporarlo nel codice del sito web. Ho bisogno di qualcosa che possa essere facilmente implementato su un sito di hosting di terze parti.

Qualsiasi suggerimento nella giusta direzione sarà benvenuto.

Grazie

risposta

5

Aggiungi un file global.asax al progetto del tuo sito web.

Questo ti darà quattro gestori di eventi, uno dei quali viene utilizzato quando carichi dell'applicazione.

Qui puoi sparare il filo.

Inoltre, si consiglia di impostare i thread su sfondo in modo da poterli scomparire quando si chiude l'app Web.

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

Il thread sarebbe interessato dalla manutenzione automatica del server Web (riciclaggio di thread/processi)? – Tomalak

+0

se il processo viene riciclato, il thread si innesca quando l'applicazione viene riavviata. – Spence

+0

Grazie per la risposta. Sembra che una soluzione perfetta non sia disponibile quando si utilizza l'hosting di terze parti, ma questo dovrebbe funzionare per il mio scopo. – Magpie

3

È idealmente necessario creare un servizio di Windows per farlo. L'altro suggerimento di creare thread dall'avvio dell'applicazione va bene fino al riavvio del server web.

A quel punto l'attività in background non verrà avviata finché la persona successiva non visita il sito. Con un servizio di Windows le attività in background riprenderanno a essere eseguite non appena il server verrà avviato.

Creazione di un servizio di Windows utilizzando .NET è abbastanza semplice, certamente molto più facile di quanto non fosse prima .net:

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

Si potrebbe naturalmente fudge l'altra soluzione per ottenere qualcosa per l'esecuzione di colpisci il tuo sito Web dopo l'avvio del server, ma questo è hacky e il modo "corretto" è un servizio di Windows.

Edit:

Questo mi ti insegnano a leggere la domanda correttamente, non ha posto l'esigenza di lavorare su un host condiviso a basso costo. L'altra soluzione è probabilmente la migliore che si possa sperare in quel caso, poiché l'approccio al servizio di Windows non è quasi certamente possibile.

+0

Grazie per la risposta. Sebbene non sia applicabile per il mio problema, hai comunque fornito alcune informazioni molto utili. – Magpie

+0

È possibile che il servizio di Windows abbia aggiornato un'impostazione all'interno dell'app ASP.NET mentre entrambi sono in esecuzione? –

Problemi correlati