2009-02-02 5 views
0

Comment puis-je demander au navigateur de ne pas attendre que d'autres contenus arrivent sur la ligne? Un peu comme le serveur qui dit "j'ai ce dont j'ai besoin, vous n'avez pas besoin d'attendre pendant que je termine le traitement de la page".Demandez au navigateur de ne pas attendre plus de contenu pendant le traitement.

J'ai une tâche côté serveur, qui est lancée lorsqu'une certaine page est touchée. La tâche peut prendre du temps, mais le code HTML rendu sera toujours le même, c'est-à-dire comme un message "Merci de commencer la tâche". J'envisage de démarrer un nouveau thread pour gérer la tâche, mais je crois qu'il doit y avoir une solution plus élégante, où vous envoyez juste les bons en-têtes/instructions au navigateur et continuez ensuite le traitement.

Des idées?

+0

Fermez la connexion au client? – some

+0

Essayé cela, a obtenu un comportement étrange en conséquence ... –

Répondre

2

Ceci enverra votre message au navigateur:

Response.Flush() 

Cependant, je crois que la responsabilité d'aviser le client que la transmission est complète se fait par IIS, qui ne le fera pas jusqu'à ce que le ASP.NET Le moteur se termine, cela fait partie de la demande et transmet le contrôle à IIS. Votre meilleur pari est de commencer un nouveau thread, ce qui ne devrait pas causer de problèmes puisque le thread de demande se terminera presque immédiatement après que le nouveau commence ... vous avez toujours un seul thread par requête.

+0

Réponse absolument génial, merci! J'étais au courant de la méthode Response.Flush, mais j'avais aussi le sentiment que ce n'était pas exactement ce que je cherchais. Votre réponse confirme mon «instinct» et jette une lumière très précieuse sur la manière dont ASP.NET et IIS interagissent. Brillant. Nouveau fil est est ... :) –

+0

Voir ce commentaire d'une question connexe sur SO: http://stackoverflow.com/questions/57845/backgroundworker-thread-in-asp-net/57891#57891 Devrais-je m'inquiéter de la nouveau thread se fait tuer? –

+0

Si vous prévoyez une charge suffisante sur le serveur pour pousser le WP à recycler, et/ou si ce processus est suffisamment important pour garantir l'achèvement, vous devez l'exécuter * définitivement * à partir de quelque chose d'autre qu'une application ASP.NET. Service Windows, travail par lots, peu importe. –

Questions connexes