2009-02-05 8 views
5

Tengo la intención de crear un pequeño sitio web que sondeará un servicio web de terceros, digamos cada 15 minutos, almacenará los datos recopilados en un archivo db y mostrará los resultados en páginas web.¿Cómo creo un hilo que se ejecuta todo el tiempo en segundo plano en un sitio web .net?

Quiero que la votación se realice las 24 horas del día, con o sin que nadie visite el sitio web.

Sé que podría crear una aplicación independiente que podría ejecutarse en el servidor para hacer esto, pero ¿hay alguna forma clara de incorporar esto en el código del sitio web? Necesito algo que sería fácil de implementar en un sitio de hosting de terceros.

Cualquier puntero en la dirección correcta será bienvenido.

Gracias

Respuesta

5

Añadir un archivo global.asax a su proyecto web.

Esto le dará cuatro controladores de eventos, uno de los cuales se utiliza cuando se carga la aplicación.

Puedes terminar aquí.

Además, le recomiendo que configure los hilos en segundo plano para que desaparezcan cuando cierre su aplicación web.

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

¿Se vería afectado ese hilo por el mantenimiento automático del servidor web (reciclaje de hilos/procesos)? – Tomalak

+0

si el proceso se recicla, el hilo se activará cuando se reinicie la aplicación. – Spence

+0

Gracias por la respuesta. Parece que la solución perfecta no está disponible cuando se utiliza el alojamiento barato de terceros, pero esto debería funcionar para mi propósito. – Magpie

3

Lo ideal es que necesite crear un servicio de Windows para hacerlo. La otra sugerencia de crear subprocesos desde el inicio de la aplicación está bien hasta que reinicie su servidor web.

En ese punto, su tarea de fondo no se iniciará hasta que la siguiente persona visite el sitio. Con un servicio de Windows, las tareas en segundo plano comenzarán a ejecutarse nuevamente tan pronto como se inicie el servidor.

La creación de un servicio de Windows utilizando .NET es bastante sencillo, sin duda mucho más fácil de lo que era antes .net:

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

Por supuesto podría eludir la otra solución por conseguir algo que correr a acceda a su sitio web después de que se inicie el servidor, pero eso es chiflado y la forma "correcta" es un servicio de Windows.

Editar:

Eso me enseñará a leer la pregunta correctamente, no manchar el requisito de trabajar en un servidor compartido barato. La otra solución es probablemente la mejor que puede esperar en ese caso, ya que el enfoque del Servicio de Windows es casi seguro que no es posible.

+0

Gracias por la respuesta. Si bien no es aplicable para mi problema, todavía me proporcionó información muy útil. – Magpie

+0

¿Es posible tener el Servicio de Windows actualizado una configuración dentro de la aplicación ASP.NET mientras ambos se están ejecutando? –

Cuestiones relacionadas