Question

J'ai une page Web qui lit les données à partir d'une source externe. Il peut prendre un certain temps pour récupérer les données.

Je me demandais si quelqu'un pouvait me donner une idée sur la meilleure façon de se produire ceci en arrière-plan. Je voudrais la page pour trouver et afficher « traitement » (ou somthing comme ça) dans le panneau où les données seront éventuellement affichées.

Je pensais que du composant BackgroundWorker, ou peut-être un AsyncPostBackTrigger ... pas sûr si ceux-ci vont même résoudre le problème à ma satisfaction.

Alors ... Quelqu'un at-il des idées à une bonne approche du problème?

Merci pour les conseils !!

Était-ce utile?

La solution

Je pense que ce que vous cherchez est Ajax . Vous voulez faire la demande du côté client d'une manière qui permettra à l'utilisateur de continuer à afficher un autre contenu jusqu'à ce que les charges.

.NET a un certain nombre de techniques différentes pour le soutien des demandes d'AJAX - allant de les contrôles de UpdatePanel Async opérations . Quelle technique utiliser vous dépend les détails de exactement ce que vous essayez de faire.

Vous pourriez aussi utiliser une bibliothèque comme jQuery pour faire async demandes de contenu à une page séparée ou d'un service dans votre application web.

Autres conseils

J'utiliser AJAX, envoyer la page à l'utilisateur avec un message de traitement, puis demander à la source externe d'un XmlHttpRequest en utilisant JavaScript (via votre site en tant que proxy).

Eh bien, une solution est de coller un asp:Timer sur votre page dans un panneau de mise à jour *. Demandez à l'événement OnTick récupérer l'état actuel du traitement (pourcentage de progression, si elle a fait, ce qu'il fait, etc.). Il existe différentes façons la partie de traitement peut notifier la page de ses progrès; tout en lui donnant une propriété d'avancement et la mise à jour comme il fonctionne est une façon de le faire. Notez que l'événement OnTick ne pas faire le traitement; il est juste de comprendre l'état du traitement.

* Si vous le mettez en dehors du panneau de mise à jour, il cochera toutes Interval au lieu de tous les Timer.Interval + TimeToReloadUpdatePanel, qui sera un gros problème si TimeToReloadUpdatePanel >= Timer.Interval.

Ma pensée est que les requêtes Web devraient être rapide donc je chercher des moyens d'améliorer les performances des requêtes. Si les données va être la même chose pour chaque requête, je voudrais essayer de mettre en cache. Si cela est impossible, je l'utilise jQuery pour faire une demande async et afficher une image de chargement jusqu'à ce que les finitions de la requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top