Plantage de mon code après deux executions

Signaler
Messages postés
6
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
26 octobre 2009
-
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
-
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

Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
"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
Messages postés
6
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
26 octobre 2009

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
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
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.