Ich muss eine unendliche while-Schleife ausführen und die Ausführung in global.asax
initiieren. Meine Frage ist, wie genau soll ich es tun? Soll ich einen neuen Thread starten oder sollte ich Async und Task oder etwas anderes verwenden? Innerhalb der While-Schleife muss ich tun await TaskEx.Delay(5000);
Hintergrundprozess korrekt implementieren Thread in ASP.NET
Wie mache ich das, damit es keine anderen Prozesse blockiert und Speicherlecks nicht erstellen?
Ich benutze VS10, AsyncCTP3, MVC4
EDIT:
public void SignalRConnectionRecovery()
{
while (true)
{
Clients.SetConnectionTimeStamp(DateTime.UtcNow.ToString());
await TaskEx.Delay(5000);
}
}
Alles, was ich tun müssen, ist dies als eine Singleton-Instanz laufen global solange Anwendung verfügbar ist.
EDIT: behobenes
Dies ist die letzte 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 diesen schönen Artikel über gefunden, wie async Arbeiter verwenden: http://www.dotnetfunda.com/articles/article613-background-processes-in-asp-net-web-applications.aspx
Und: http://code.msdn.microsoft.com/CSASPNETBackgroundWorker-dda8d7b6
Aber ich denke für meine Notwendigkeit s dieses wird perfekt sein: http://forums.asp.net/t/1433665.aspx/1
Was Sie versuchen zu tun? – jrummell
Was macht Clients.SetConnectionTimeStamp? Was ist der Zweck davon? Welche spezifische Funktionalität möchten Sie implementieren? Wenn Sie eine qualitativ hochwertige Antwort wünschen, müssen Sie diese Informationen bereitstellen. – cadrell0
Dies ist besser mit einem Timer zu tun. – Aristos