2009-08-18 4 views

Antwort

-1

SIE SOLLTEN NICHT LANGE AUFGABEN IN WEB-ANFRAGE AUSFÜHREN.
Stattdessen müssen Sie wie folgt vorgehen:

  1. In Ihrer Aktion get a working new thread, die es tut.
  2. Rendern Sie die Ansicht, die regelmäßig über den Fortschritt abfragt (mithilfe von Ajax-Anforderungen oder Normap-Posts). Es ist eine andere Aktion.
  3. Wenn der Job abgeschlossen ist, führen Sie die 3. Aktion aus, die das tatsächliche Ergebnis zurückgibt.

Hier ist one Beispiel (für WebForms obwohl). Aber anstatt einen neuen Thread zu starten, muss man einen aus dem ASP.NET-Pool erhalten.

+0

Danke - Ich muss ein bisschen herumspielen mit dieser – Paul

+0

Das macht Spaß! Wer und aus welchem ​​Grund hat die Antwort abgelehnt? –

+0

Ich habe es nicht downvote, aber ich schlage vor, es war, weil Sie vorgeschlagen haben, Threads zu verwenden. Was ich für eine schlechte Idee halte. –

1

Sie müssen diese Seite entweder in einen jQuery-Aufruf laden, wie von Jason vorgeschlagen, und hoffen, dass es keine Zeitüberschreitung gibt, oder den ausgeführten Code in eine eigenständige Komponente verschieben. in der Regel ein Windows-Dienst, und dann mit ihm kommunizieren, um die Verarbeitung zu starten und eine Nachricht zu erhalten, wenn es fertig ist (ich benutze in der Regel MSMQ).