Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Le thread a été abandonné. [ Base de données / Access ] (v.massip)

lundi 2 octobre 2006 à 20:54:13 | Le thread a été abandonné.

v.massip

Membre Club
Bonjour à tous!

J'ai un petit problème d'exception.

Voilà le problème:

Dans mon site ASP-VB.NET framework2, j'utilise le code-behind de plusieurs pages pour faire un traitement de données (enregistrement de données dans un base access) similaire.

Après avoir validé le traitement dans chacune des pages (procédures onclick), je me suis dit que je pouvais simplifier! J'ai donc créé une classe contenant une procédure réalisant le traitement sus-mentionné!

Et le problème est apparu : Le thread a été abandonné.

Pourtant, le traitement des données est bien réalisé! Voici mon code (code-behind d'une page) :

Protected Sub YOUPI_Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles YOUPI_Button.Click
   Try
      Dim TOTO As New MACLASS
      MACLASS.MaFonction(TEXT.Text)
      Response.Redirect("page2.aspx")
   Catch ex As Exception
      MsgBox(ex.Message.ToString)
      Response.Redirect("error.aspx")
   End Try
End Sub

Après étude de mon code et grace à des MsgBox bien placés, j'ai pu détecter que le message d'erreur est déclenché par les "Response.Redirect".
Or, ils fonctionnaient correctement avant la mise en classe du traitement de données.

QQ1 aurait-il la réponse à mon problème SVP? Ou tout du moins l'explication du problème?!

Merci d'avance!





 


lundi 2 octobre 2006 à 22:41:47 | Re : Le thread a été abandonné.

jesusonline

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bonsoir, pour différente raison il vaut mieux éviter de mettre les response.redirect dans un bloc try catch. rajouter un Boolean error à l'exterieur de ton bloc try catch et suivant l'etat de la variable tu fais ton response.redirect vers tel ou tel page.

Rapidement voici les raisons pour lesquels il faut éviter le response.redirect dans un bloc try catch, un response.redirect va écrire dans la response une redirection 302 vers ta nouvelle page puis il va quitter le thread de l'execution de la page comme un malpropre ce qui resulte a une exception de type ThreadAbortException or comme tu es dans un bloc try catch tu peux éventuellement avoir un bloc finally qui est toujours executé ...
Si tu n'as pas le choix d'utiliser un response.redirect (ce qui n'est pas ton cas) tu pe ux utiliser response.redirect("lapage", true) ce qui ne quittera pas le thread en cours mais cela va continuer l'execution de la page meme aprés le response.redirect (sans pour autant l'afficher à l'écran).


Cyril - MVS - MCP

mardi 3 octobre 2006 à 11:10:01 | Re : Le thread a été abandonné.

v.massip

Membre Club
Réponse acceptée !
Effectivement, je comprends mieux le problème!  Merci!

La solution est donc le code suivant :
Protected Sub YOUPI_Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles YOUPI_Button.Click
   Try
      Dim TOTO As New MACLASS
      MACLASS.MaFonction(TEXT.Text)
      Response.Redirect("page2.aspx", False)
   Catch ex As Exception
      MsgBox(ex.Message.ToString)
      Response.Redirect("error.aspx")
   End Try
End Sub

La fonction Response.Redirect est définie comme suit :
Response.Redirect(url As String, [endResponse As Boolean] = True)
endResponse : Indique si l'exécution de la page en cours doît s'arrêter.

Ceci évite l'erreur ThreadAbortException car le thread est quitté proprement cette fois-ci.

Sinon, et si la fin du code de la page doit s'exécuter quand même après la redirection, il faut mettre endResponse a True.

Voilà! Merci encore!

 


mardi 3 octobre 2006 à 11:18:28 | Re : Le thread a été abandonné.

jesusonline

Membre Club Administrateur CodeS-SourceS
Non ce n'estpas ce que j'ai dit !

"Si tu n'as pas le choix d'utiliser un response.redirect (ce qui n'est pas ton cas)"

Dans ton cas tu n'as pas besoin d'avoir un response.redirect à l'interieur de ton bloc try catch !!!

Dim error as Boolean = false

try
truc()
catch
error = true
end try

if error then
response.redirec("error.aspx")
else
response.redirec("page2.aspx")
end if

avec ce que tu as fait tu va continuer l'execution de ta page meme aprés le redirect ce qui est complétement inutile et "gourmand" niveau perf.


Cyril - MVS - MCP

vendredi 11 juillet 2008 à 22:22:55 | Re : Le thread a été abandonné.

mezaourou

Réponse acceptée !
Effectivement, je comprends mieux le problème!  Merci!

La solution est donc le Protected Sub YOcode suivant :

   Try
      Dim TOTO As New MACLASS
      MACLASS.MaFonction(TEXT.Text)
      Response.Redirect("page2.aspx", False)      '   ------------------>False
   Catch ex As Exception
      MsgBox(ex.Message.ToString)
      Response.Redirect("error.aspx")
   End Try

mezaourou



Cette discussion est classé dans : problème, code, données, traitement, thread


Répondre à ce message

Sujets en rapport avec ce message

Crash d'IE ou thread abandonné suite à grosse insertion en bdd [ par rastali ] Bonjour à tous,J'ai un gros souci sur l'application que je développe (VS 2005, ASP.NET 2.0 C#). J'effectue le traitement de données suivant:- lecture [C#] Problème DropDownList et UpdatePanel [ par The Red Man ] Bonjour !J'ai de nouveau un problème !voilà mon code :                     &nbsp  <asp:Butt Mise en forme de données [ par CGSI ] Salut tout le monde,Je sait que vous pourez m'aider car c'est digne du débutant que je suis.Je travail en ASP .Net avec SQL Server et VB.Le probléme q controle avec base [ par ayette ] Bonjour,Dans le cadre d'une application, je souhaiterais  faire un controle sur les données saisies dans un  formulaire en vérifiant l'existance de ce Problème avec le NuméroAuto [ par Paulo2901 ] Bonjour à tous. Je développe un projet Web sur Visual Web Developper 2005.J'ai créé un formulaire ASP.Net dans lequel j'ai un FormVie Problème de code behind avec DotNetNuke et VS 2003 [ par sojiro ] Bonjour, Travaillant sur un portail DotNetNuke, j'ai cherché à créer un module or il s'avère que durant la création d'un module je crée un fichier * problème xml et xslt [ par c_ensias ] Bonjour à tous,J'ai un fichier xml dont j'ai appliqué un filtre xslt pour en extraire des données.Je voudrais que la sortie soit un fichier XML qui re DetailsView et DataBinding [ par bigflo93 ] Bonjour à tous :)J'ai un petit, enfin plutôt un gros problème en Asp.Net 2.0J'ai un détailsview et je voudrais l'utiliser pour pouvoir inserer des don Problème de pagination avec le Datagrid [ par CREZ59 ] Bonjour à tous, J'ai un soucis avec un datagrid.Je formate un datagrid à la main, ensuite de fait un lien avec ma base de données. Je met la proprié Problème de lecture de fichier ASP [ par hodaking ] Bonjour à tous! Voila! Je suis débutant en asp et je viens de trouver des hébergeurs gratuits: chez www.1asphost.com et www.brinkster.comMais le prob


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 2,324 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.