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 :

[VB.NET] Problème de Thread


Sujet :

ASP.NET

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut [VB.NET] Problème de Thread
    Bonjour,


    J’ai une erreur Le thread a été abandonné, par abus de language, je dirai « marche » ou « marche pas ».

    Cette erreur intervient seulement sur mon poste de développement depuis l’intégration de Crystal Report sur une page qui ne contient pas spécialement de code Crystal


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Private Sub dgInfo_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgInfo.UpdateCommand
            Try
     
                Response.Redirect("default.aspx?rnFct=10&CD_MATRICE=" & dgInfo.DataKeys(CInt(e.Item.ItemIndex)) & "&CDES=" & e.Item.Cells(0).Text & "&PERIODEDEB=" & e.Item.Cells(2).Text & "&PERIODEFIN=" & e.Item.Cells(3).Text)
     
            Catch ex As Exception
                Erreur.Ecrire(ex, Erreur.enLogicielErreur.leAppliIntranet)
            End Try
        End Sud
    Ceci est l’événement d’un DataGrid sur le clic de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    			<asp:ButtonColumn ButtonType="LinkButton" HeaderText="Accès" Text="<img src=images/icones/masc/edit.gif border=0 title='Accès à la Matrice'>"
    				CommandName="Update">
    				<HeaderStyle Width="5%"></HeaderStyle>
    				<ItemStyle HorizontalAlign="Center" />
    			</asp:ButtonColumn>
    TRES IMPORTANT

    Cette application tourne sur un :
    -> Poste de développement
    -> un serveur de production

    A la base, je n’avais aucun bug sur les 2 environnements. Les erreurs du thread abandonné se sont déclarés depuis que j’ai commencé à travaillé sur Crystal Report (Voir le topic où j’ai quelques questions d’ailleurs).
    La production marche très bien !!!

    J’ai donc essayé ces solutions sur mon poste développement sans succés :
    -> Supprimer toute référence @ crystal report dans mon code, j’ai même supprimé la page qui contenait et gérait le composant crystal.
    -> Créer un nouveau projet neuf en y glissant mes pages et classes

    Cependant, lorsque
    -> je rappratie les sources mises en production sur mon poste développement
    -> j’accéde à l’application directement sur IE, ca marche
    -> j’accède à Visual Studio 2003, puis compile l’application, IE se lance, le bug se reproduit.

    J’ai beau mettre des points d’arrêt, je suis sur que c’est bien l’événement cité ci-dessus qui est en cause. Je ne comprend pas pourquoi cela marche sur l’environnement de production et plus sur mon poste de développement. Est-ce vraiment Crystal Report qui a vérolé mon poste de développement.

    Noter que j’ai un 2ème serveur de pré-production : lorsque je déploie l’application depuis mon poste de dév sur ce serveur de pré-production, ca ne marche également pas, mais si je m’amuse à déployer les sources actuelles du serveur de production sur le serveur de pré-production, ca marche.

    Avez des idées :

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Hello,

    Si tu regardes la doc de Response.Redirect (http://msdn2.microsoft.com/en-us/library/t9dwyts4.aspx) tu pourras voir que cette méthode est susceptible de lever l'exception ThreadAbortException. Et ils ont l'air de dire que c'est "normal" .

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Moi aussi ça me parait normal ds la mesure où tu peux forcer le Redirect avant la fin de l'execution de tout le code.
    Je crois que c'est le 2eme paramètre (un booleen) qui permet de forcer ou pas mais à vérifier

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    Le 2ème paramètre, si tu mets true, permet de forcer le redirect en fin de page !

    MAIS, si vous lisez le message, je précise bien que ca marchait !

    Je ne comprend vraiment : je remplis un datagrid, je clic sur un buttonlink ! Sur le clic de bouton link, je crée donc un postback, la page se recharge donc, l'événement update_command du button link arrive et hop, je fais un redirect, c pas la mer à boire donc !! non ? comment puis je faire pour me rediriger de page en page donc...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Ben catcher l'exception et laisser la page s'exécuter, ça marche pas ?

    PS : oui c'est un peu bizarre qd meme de devoir faire ça, ya peut etre mieux, je sais pas, mais vu que cette exception est "normale" ...

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    oui j'ai essayé mais ca ne marche pas :-/

  7. #7
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Parfois la chance fait bien les choses. Si ton traitement est rapide et que ton thread se termine avant que la page ne soit envoyée, c'est nickel. En ajoutant de nouveaux traitements, tu ajoutes du temps et cela devient long...

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    j'espère que tes propos sont une masquerade, car sinon je vois pas l'intérêt de développer en .net :-/

  9. #9
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Citation Envoyé par Sadneth
    j'espère que tes propos sont une masquerade, car sinon je vois pas l'intérêt de développer en .net :-/
    Le principe des threads c'est de faire des actions en parallèle.

    Un thread (principal) s'occupe d'une action puis renvoye la page. Si tu lui dis pas explicitement qu'il doit attendre l'autre, il enverra la page quand il a fini, que l'autre ait fini ou non.

    Le framework .NET c'est bien mais ca va quand même pas faire tout pour toi Surtout que parfois c'est intéressant de laisser un traitement se faire alors que la page est déjà envoyée...

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Eu... mais Ditch de quoi parles-tu ?? Sadneth n'a créée aucun thread manuellement, il a une exception ThreadAbortException générée par le Response.Redirect, et il est bien indiqué sur la doc que cette méthode peut renvoyer cette exception. Le probleme c'est qu'ils ne donnent pas d'explication sur le pourquoi, ni comment contourner le probleme. Tu devrais peut etre tout lire avant de donner des réponses un peu rapides

  11. #11
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Citation Envoyé par Sphax
    Eu... mais Ditch de quoi parles-tu ?? Sadneth n'a créée aucun thread manuellement, il a une exception ThreadAbortException générée par le Response.Redirect, et il est bien indiqué sur la doc que cette méthode peut renvoyer cette exception. Le probleme c'est qu'ils ne donnent pas d'explication sur le pourquoi, ni comment contourner le probleme. Tu devrais peut etre tout lire avant de donner des réponses un peu rapides
    J'ai lu mais je lis beaucoup de choses!!

    Mis à part le fait que c'est pas lui explicitement qui l'a créé, rien ne change.

    Le pourquoi je viens de le dire, le comment contourner le problème, ca c'est une autre histoire...

    Si tu utilises le mode debug, c'est plus lent également, ca peut être une cause (mais pas une excuse pour le framework)

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Mouais enfin, je doute fort que ce soit le temps d'execution de sa page qui soit en cause. Sans compter que comme tout se passe dans le meme thread, la page ne peux pas être envoyée tant qu'il n'a pas fini son traitement (au mieux on peut avoir un timeout d'execution de script, mais bon, je doute encore une fois que ce soit le probleme). Je maintiens que ta réponse est un peu hors sujet, mais c'est pas grave hein. Le probleme vient de la fonction Response.Redirect, c'est tout.

    EDIT : trouvé ça http://support.microsoft.com/kb/312629/EN-US/ , ça aide sadneth ?

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Tu peux trouver egalement plein de sujets la dessus sur google, comme quoi tu n'es pas le seul à avoir le soucis. Apparemment de catcher l'exception, et surtout ne RIEN faire d'autre aprés (puisqu'effectivement, le thread courant a été arrété par Response.redirect) suffit a resoudre le "probleme".

  14. #14
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Si tu passes un booleen en second paramètre tu as toujours le problème?

    Je ne sais plus si c'est true ou false qu'il faut mettre (je pense que c'est false qui signifie "ne pas faire la redirection maintenant mais attendre la fin du traitement présent")

    Ceci dit, c'est lourd car il continue un traitement qui ne nous intéresse pas

  15. #15
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Sphax
    Tu peux trouver egalement plein de sujets la dessus sur google, comme quoi tu n'es pas le seul à avoir le soucis. Apparemment de catcher l'exception, et surtout ne RIEN faire d'autre aprés (puisqu'effectivement, le thread courant a été arrété par Response.redirect) suffit a resoudre le "probleme".
    Oui j'ai posté dans d'autres forums également Sphax et j'ai fait pas mal de recherches sur google aussi ! En tout cas, merci de ton soutien pour la lecture du sujet que j'ai pris à détailler ^^

    Ditch : bref, je force donc true. Du coup, j'ai pas testé Response.redirect (monUrl, false) car je pensais que false était par défaut. Je vais donc vérifier ça !

    Cependant, faute de réponse, j'ai pris peine de ré-installer le framework sur mon poste + .NET 2003 (sait on jamais)

    Sphax : je vais aller voir le lien que tu me dis et vous tiens au courant...

  16. #16
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    arf

    j'ai tout réinstallé mais toujours pareil.

    J'ai essayé :
    Response.Redirect (monUrl, True)
    Response.Redirect (monUrl, False)
    Response.Redirect (monUrl)

    Mais rien à faire, ca plante

    Je lis l'article que l'on m'a proposé là

  17. #17
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Suffit de catcher l'exception levée et faire comme si de rien n'était

  18. #18
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    déjà fait ! si tu catch et fait un redirect il plante

  19. #19
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par Sadneth
    déjà fait ! si tu catch et fait un redirect il plante
    Si tu catches, ça plante pas. C'est un peu le but du catch normalement

  20. #20
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    que faut il faire pour que tu me crois ?

    copie de code avec point d'arrêt + copie d'écran ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB.NET] Problème avec un OptionButton dans Excel 2003
    Par alfprod dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/09/2004, 13h40
  2. [VS.NET] Problème connection Source safe
    Par Nip dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 24/06/2004, 15h30
  3. [VB.NET] Problème sur composant comboBox hérité
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 14h54
  4. [CR][ASP.NET] Problème d'affichage du rapport
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 20/04/2004, 12h39
  5. [VC++6][DX9] Problème de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2003, 22h22

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