2011-09-02 3 views
0

Je suis en train de développer un composant WebPart qui doit analyser une liste de fichiers côté serveur et générer un rapport. Le problème est que cette opération peut durer beaucoup de temps.Part Web Part, traitement asynchrone sur le serveur

J'ai décidé d'effectuer le traitement des fichiers dans un thread séparé et de charger le contenu de la partie Web instantanément avec un message tel que "Chargement ...." lorsque les résultats sont analysés, un événement sera déclenché et le le contenu de la partie web sera mis à jour.

J'ai trouvé beaucoup de messages avec la solution suivante

Le problème est que je n'ai pas dans mon solution le fichier .aspx dans lequel je peux ajuster le paramètre Async="true" dans la directive @Page.

Est-ce que quelqu'un sait où est ce fichier ou comment il peut être ajouté pour être manipulé par le WebPart.

P.S. J'ai essayé d'exécuter la tâche avec un BackgroundWorker mais il se lève la même erreur qu'avec Page.RegisterAsyncTask. L'erreur est la suivante: "Les opérations asynchrones ne sont pas autorisées dans ce contexte La page commençant une opération asynchrone doit avoir l'attribut Async défini sur true et une opération asynchrone ne peut être démarrée que sur une page antérieure à l'événement PreRenderComplete."

Répondre

0

WebParts peut s'exécuter de manière asynchrone/multithread. Enregistrez les gestionnaires d'événements appropriés via Page.RegisterAsyncTask. Vous allez spécifier la méthode qui doit être appelée de manière asynchrone, ainsi que la méthode de rappel à laquelle le contrôle retournera une fois le traitement terminé.

http://daniellarson.wordpress.com/2006/06/26/asynchronous-webparts-in-asp-net-2-0/

http://daniellarson.wordpress.com/2006/07/16/asynchrounous-asp-net-webparts-for-sharepointmoss/

+0

J'ai lu ce message, mais le problème demeure. Lisez la partie de ma question sur l'erreur qui apparaît. La page me dit que le mode asynchrone n'est pas vrai. De même, "les pages asynchrones ne sont PAS activées avec SharePoint 2007, il s'agit d'un paramètre que vous devrez modifier dans vos pages SiteTemplates aspx ou changer globalement dans web.config". Où sont situés SiteTemplates? Ma solution ne contient pas web.config. Dans le message, vous pouvez voir "Le code s'exécutera aussi de façon synchrone ou asynchrone, selon la valeur asynchrone de la page" Je *** ne peut pas atteindre cet objectif * (pour définir la valeur asynchrone de la page) ... – Demoony

+0

Juste une note: Asynchrone ne signifie pas toujours multi-thread – Pierreten

+0

Pierreten: Je suis d'accord avec vous. Ce sera parfait pour être multithread, mais si ce n'est pas possible, asynchrone suffira. TOUTES LES SOLUTIONS ????????? – Demoony