Richtig implementiert hintergrund-Prozess Thread in ASP.NET

Ich ausführen müssen, eine unendliche while-Schleife und wollen zum initiieren der Ausführung in global.asax.
Meine Frage ist, wie genau soll ich das machen? Sollte ich einen neuen Thread starten, oder sollte ich Async und Aufgabe oder etwas anderes? Innerhalb der while-Schleife muss ich tun await TaskEx.Delay(5000);

Wie mache ich das, damit es nicht blockieren andere Prozesse und erstellen keine memory leaks?

Ich benutze VS10,AsyncCTP3,MVC4

EDIT:

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

Alles, was ich zu tun ist, führen Sie dies als eine singleton-Instanz, die Global so lange, wie die Anwendung verfügbar ist.

EDIT:GELÖST

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

Fand ich diesen netten Artikel über die Verwendung von async-Arbeiter: http://www.dotnetfunda.com/articles/article613-background-processes-in-asp-net-web-applications.aspx

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

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

Was versuchen Sie zu tun?
Was bedeutet Kunden.SetConnectionTimeStamp tun? Was ist der Zweck davon? Welche spezifischen Funktionen Sie sind auf der Suche zu implementieren? Wenn Sie wollen ein qualitativ hochwertiges beantworten, müssen Sie diese Informationen bereitstellen.
Dies ist besser, es zu tun mit einem timer.
Ich möchte Rundfunk über einen Hub von außerhalb der Hub - github.com/SignalR/SignalR/wiki/Hubs
Wenn Sie waren in der Lage, Ihre eigene Frage zu beantworten, bitte poste es als Antwort und markieren Sie es als akzeptiert.

InformationsquelleAutor Registered User | 2012-06-01

Schreibe einen Kommentar