Plantage de mon code après deux executions

stalmar Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 26 octobre 2009 - 29 sept. 2009 à 17:03
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 1 oct. 2009 à 12:23
Hello,

Il y a certainement une notion qui m'échappe, mais je sais pas laquelle

J'ai codé un truc y a un moment que j'ai abandonné à cause de cette même erreur

La j'ai un code dans un button click qui génère une requête HTTP
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.com");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();


j'execute mon programme, je clique, ça marche. je reclique, ça marche. Une troisième fois ça plante.

Pareil avec ce code, celui la est censé envoyer une notification Prowl sur mon Iphone
ProwlClientConfiguration y = new ProwlClientConfiguration();
y.ApiKeychain = txtAPI.Text.ToString();
y.ApplicationName = txtAPP.Text.ToString();
y.Validate();

ProwlNotification x = new ProwlNotification();
x.Description = txtTEX.Text.ToString();
x.Priority = ProwlNotificationPriority.VeryLow;
x.Event = txtEVE.Text.ToString();
x.Validate();

ProwlClient u = new ProwlClient(y);
u.PostNotification(x);


1,2 fois Ok, la troisième ça plante.

Je sais pas quoi faire ?

Merci pour vos solutions

3 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
30 sept. 2009 à 08:45
"Ca plante", ca n'aide pas bcp, on va pas bien pouvoir t'aider avec ca....
J'ai tout de meme une supposition : tu n'appelle pas close sur ton httpwebresponse avant de sortir de la méthode
0
stalmar Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 26 octobre 2009
30 sept. 2009 à 12:47
Hello,

Effectivement j'ai omis les détails intéréssants
ça générais des "Délais d'attente d'exécution expiré".
L'application ne répondais pas pendant 1-2 minutes

mais c'est effectivement ça, je ne clos pas mes connexions ouverte et je pense que c'est le même problème pour les autres.

Par contre, une idée pourquoi ça fonctionne deux fois et pas trois ?

En tout cas merci
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
1 oct. 2009 à 12:23
Le hasard, principalement.
En gros, tu ne close pas le stream, il reste ouvert après la fermeture de la méthode. Cependant, l'objet étant local à la méthode, il devient éligible pour une garbage collection. Donc entre deux appels, ton objet sera parfois détruit par le garbage collector, et donc ton stream sera fermé par le dispose de ton objet, ce qui permet que ca refonctionne une seconde fois.
0
Rejoignez-nous