Implementieren Sie korrekt Hintergrundprozess Thread in ASP.NET

Ich muss eine Endlosschleife ausführen und möchte die Ausführung in startenglobal.asax. Meine Frage ist, wie genau soll ich das machen? Soll ich einen neuen Thread starten oder Async und Task oder etwas anderes verwenden? Innerhalb der while-Schleife muss ich tunawait TaskEx.Delay(5000);

Wie mache ich das, damit keine anderen Prozesse blockiert werden und keine Speicherlecks entstehen?

Ich benutze VS10, AsyncCTP3, MVC4

BEARBEITEN:

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

Alles, was ich tun muss, ist, dies als Singleton-Instanz global auszuführen, solange eine Anwendung verfügbar ist.

EDIT: Gelöst

Dies ist die endgültige Lösung in 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
    {
            ///
    }
}

Ich habe diesen schönen Artikel über die Verwendung von Async Worker gefunden:http://www.dotnetfunda.com/articles/article613-background-processes-in-asp-net-web-applications.aspx

Und das:http://code.msdn.microsoft.com/CSASPNETBackgroundWorker-dda8d7b6

Aber ich denke für meine Bedürfnisse wird dieser perfekt sein:http://forums.asp.net/t/1433665.aspx/1

Antworten auf die Frage(5)

Ihre Antwort auf die Frage