Implementar correctamente el proceso en segundo plano Thread en ASP.NET

Necesito ejecutar un bucle while infinito y quiero iniciar la ejecución englobal.asax. Mi pregunta es ¿cómo debo hacerlo? ¿Debo comenzar un nuevo tema o debo usar Async and Task o cualquier otra cosa? Dentro del bucle while necesito hacerawait TaskEx.Delay(5000);

¿Cómo hago esto para que no bloquee ningún otro proceso y no cree pérdidas de memoria?

Yo uso VS10, AsyncCTP3, MVC4

EDITAR:

 public void SignalRConnectionRecovery()
        {
            while (true)
            {
                Clients.SetConnectionTimeStamp(DateTime.UtcNow.ToString());
                await TaskEx.Delay(5000);
            }
        }

Todo lo que necesito hacer es ejecutar esto como una instancia de singleton a nivel mundial siempre que la aplicación esté disponible.

EDITAR: SOLUCIONADO

Esta es la solución final en Global.asax

protected void Application_Start()
{
    Thread signalRConnectionRecovery = new Thread(SignalRConnectionRecovery);
    signalRConnectionRecovery.IsBackground = true;
    signalRConnectionRecovery.Start();

    Application["SignalRConnectionRecovery"] = signalRConnectionRecovery;
}


protected void Application_End()
{
    try
    {
        Thread signalRConnectionRecovery = (Thread)Application["SignalRConnectionRecovery"];
        if (signalRConnectionRecovery != null && signalRConnectionRecovery.IsAlive)
        {
            signalRConnectionRecovery.Abort();
        }
    }
    catch
    {
            ///
    }
}

Encontré este buen artículo sobre cómo usar async worker:http://www.dotnetfunda.com/articles/article613-background-processes-in-asp-net-web-applications.aspx

Y esto:http://code.msdn.microsoft.com/CSASPNETBackgroundWorker-dda8d7b6

Pero creo que para mis necesidades este será perfecto:http://forums.asp.net/t/1433665.aspx/1

Respuestas a la pregunta(5)

Su respuesta a la pregunta