IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Empêcher tout traitement quand il y en a un en route


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut Empêcher tout traitement quand il y en a un en route
    Bonjour,

    J'aimerais savoir s'il y a une méthode (recommandée) pour éviter les problèmes d'exécution d'un nouveau traitement alors qu'il y en avait déjà un en cours sur une page précédente.

    Ex : Sur une page aspx, j'ai un traitement d'affichage de carte avec des données issues de fichiers KML...typiquement, si je n'attends pas la fin de cet affichage et que j'essaie via mon menu d'afficher une autre page aspx, j'ai un plantage.
    Y a-t-il moyen de "protéger" FACILEMENT cette exécution (genre empêcher toute autre action tant que cela n'est pas terminé OU d'abandonner l'action en cours pour passer à celle demandée). L'une ou l'autre de ces possibilités m'intéresserait, mais j'aimerais surtout avoir des conseils de bonne pratique.

    Dans mon cas, j'ai une erreur du genre :
    Erreur d'analyse XML : section CDATA non fermée
    (en fait, la génération du fichier KML destiné à afficher une carte n'a pas dû avoir le temps d'être terminée...elle semble avoir été abandonnée mais sans doute l'affichage prévu après cette génération doit toujours suivre dans la pile d'appel et cela plante). Cela n'arrive que si je n'attends pas suffisamment de temps...et que je "zappe" rapidement sur une autre option.

    Dans la même veine, c'est aussi intéressant pour moi d'avoir des informations dans le genre afin d'éviter les traitements multiples dus à des clics en série fait par des grands malades de la souris qui croient que leur clic n'a pas été pris en compte. Comment empêcher ces autres lancements intempestifs, voire comment leur signifier "visuellement" qu'il y a bien un traitement en cours (des fois c'est long à réagir suivant le débit des personnes utilisant le site).

    Merci de vos éclaircissements...

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bonjour,

    Dans ce cas j'utiliserais les thread avec lock et mutex.

    Lock permet de verrouiller un blok de code dit "critique" pour qu'il ne soit pas interrompu mais attention ça bloque tout les autres thread ! Donc tout autre utilisateur sur la page sera bloqué
    http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx

    L'autre solution est le mutex que je te conseillerais plus, il permet de verrouiller un partie de block de code "critique" et met dans une file d'attente les autre demandes puis exécute dès que possible.
    http://msdn.microsoft.com/fr-fr/libr...,VS.85%29.aspx


    NB : Critique => code qui doit être exécuter sans interruption.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut
    Bonjour,

    Je ne suis pas sûr que cela soit ce que je recherche comme réponse...Il y a bien des traitements serveurs mais aussi des traitements clients.

    Parfois, j'ai le traitement qui démarre côté serveur (suite au page_load) :
    - Génération du fichier KML (C# suite à des extractions dans Oracle)
    - Puis lancement du Javascript via RegisterStartupScript pour afficher les données KML de la carte dans le navigateur.

    Parfois, j'ai du traitement initié par des boutons "clients" avec utilisation de callback :
    - Javascript côté client pour déterminer comment générer le fichier KML (contextuel)
    - Déclenchement du callback avec paramètre contextuel (génération du fichier KML côté serveur en C# suite à des extractions de données dans Oracle)
    - Fin du callback côté client en javascript pour gérer l'affichage de la couche KML générée sur la carte dans le navigateur.

    Ces traitements peuvent prendre quelques secondes (incompressibles)...N'y a-t-il pas d'astuces pour éviter toute interférence une fois un de ces type de traitement lancé ?

Discussions similaires

  1. Empêcher toute modification d'un enregistrement
    Par RobiPMS dans le forum Sécurité
    Réponses: 20
    Dernier message: 07/06/2020, 07h16
  2. Réponses: 3
    Dernier message: 14/06/2008, 22h36
  3. Réponses: 12
    Dernier message: 22/06/2007, 13h59
  4. Mon lecteur CD Rom s'ouvre tout seul quand j'allume mon PC
    Par koKoTis dans le forum Windows XP
    Réponses: 14
    Dernier message: 28/12/2006, 20h03
  5. [Hardware]PC s'éteint tout seul quand CPU 100%
    Par gojira dans le forum Composants
    Réponses: 18
    Dernier message: 03/08/2006, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo