2012-09-10 13 views
6

Ich programmiere eine ASP.NET MVC 3-App. Wenn sich ein Benutzer anmeldet, muss ich ein entferntes System überprüfen und die neuesten Daten für diesen Benutzer vom System abrufen. Diese Aufgabe wird ca. 15 Sekunden dauern.Ausführen einer kurzlebigen Hintergrundaufgabe von MVC

Der Benutzer sollte in der Lage sein, meine App direkt nach der Anmeldung einzugeben (nicht 15 Sekunden auf den Remote-Anruf warten!). Wenn der Remote-Aufruf abgeschlossen ist, werden die lokalen Informationen des Benutzers aktualisiert.

Ich dachte daran, einen Thread zu verwenden, um dies zu tun, nachdem er sich eingeloggt hat und seinen Lauf laufen ließ. Nach dem Lesen bin ich jedoch besorgt über das Recycling usw. bei der Arbeit mit Threads in MVC. Ich würde einen asynchronen Controller verwenden, aber ich muss dem Benutzer den Status dieses Hintergrundprozesses nicht mitteilen. Habe ich recht, wenn es um Fäden geht, auch wenn sie nur kurzlebig sind?

+0

Werfen Sie einen Blick auf eine [ähnliche Frage] (http://stackoverflow.com/a/11337836/706456) – oleksii

Antwort

5

"... besorgt über das Recycling ..."

"... müssen nicht den Staat, um den Benutzer Feedback ..."

".. .short-laved ... "

3 Gründe, warum Sie ThreadPool.QueueUserWorkItem verwenden sollten.

+0

Dies ist genau das, was ich brauche. Ich wollte das Vertrauen haben, den Befehl auf einen Thread zu werfen und mit der Rückgabe einer Seite weiterzumachen. – matt

0

Verwenden Sie keine "Threads" in einer Web-App. Lassen Sie den Server mit "async" -Aufrufen umgehen. Andernfalls müssten Sie einen Threadpool einrichten und die langsame Anfrage quetieren.

+0

Ich war unter dem Eindruck, dass war/async nicht wirklich für die Implementierung von Hintergrundaufgaben gedacht war. (Im Gegensatz zur Implementierung von sequenziellen Flows, die lang andauernde Operationen ohne Blockierung beinhalten.) – millimoose

+0

Es werden Daten von einem ANDEREN Server abgerufen. AsyncController richtet die Anfrage ein und gibt den Thread frei, bis eine Antwort vorliegt. – jrb

Verwandte Themen