Problème avec Console.WriteLine [Résolu]

Signaler
Messages postés
20
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
18 décembre 2008
-
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
Bonjour,

J'ai un problème étrange... Je fais une appli Windows en .NET 2.0, avec des Socket asynchrones et des opérations cross-thread qui normalement fonctionnent bien.

Cependant, j'ai un souci avec mon programme, c'est que quand je fais du debug pas à pas au moment de la gestion du BeginReceive et des receptions de données, je met un Console.WriteLine, qui marche bien, j'invoke une procedure d'un autre thread, et à partir d'ici, dès que le Writeline est executé, le debugger ne passe plus à la ligne suivante, et plus rien ne se passe, mon appli se stoppe.

Si je met le WriteLine en commentaire, tout se passe de manière normale.

Y a-t-il une raison à ce phénomène ? Je m'arrache les cheveux là dessus...

Merci de votre aide !

8 réponses

Messages postés
20
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
18 décembre 2008

Je viens de trouver !!! \o/

En fait, j'avais un buffer de 1024 byte, j'ai transformé ça en string, et j'ai voulu l'afficher. Le problème se situait sur le fait que la string était "Message\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0........\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" et que la première fois que j'ai demandé le WriteLine, c'est passé, mais la seconde fois, il avait visiblement pas terminé de traiter la première série et donc il se mettait en attente, là où je croyais qu'il plantait, tellement l'attente était longue...

J'espère que cela aidera d'autres personnes, il m'a dont suffit de couper la string à la fin de la chaine reçue.

a+
Messages postés
73
Date d'inscription
mardi 15 mars 2005
Statut
Membre
Dernière intervention
18 novembre 2010

Quand tu es en débug, si tu as plusieurs Thread qui tournent c'est pas facile.
Je te conseil de mettre en pause les threads qui ne t'intéresse pas le temps de deboguer celui qui t'intéresse.
Enfin si j'ai compris ce que tu fais :)

Keikun59
Messages postés
20
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
18 décembre 2008

Salut,

Merci pour ta réponse, en fait, c'est pas compliqué pour moi de suivre mon programme, mais c'est juste que le Console.WriteLine fige le debugger...

A vrai dire, je crois que quand ça arrive, le thread callback du Receive doit même être terminé, vu qu'il ne contient que l'invoke...

Donc je me demandais si Console.WriteLine n'avait
Messages postés
20
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
18 décembre 2008

(Pourquoi ça a coupé ??)

pas certaines limitations dûes au multithreading ou à l'invoke. Je comprend pas très bien la machine interne vis à vis de l'invike, donc je me disais que j'avais peut être fait quelque chose à ne pas faire...
Messages postés
20
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
18 décembre 2008

Je viens de lancer un QuickWatch sur le Console.WriteLine("In1 : " + texte); normalement, ça met que ça ne rend pas de valeur, normal puisque c'est un void, mais là dans mon cas, ça me sort un timeout.

Je suis perdu...
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
je pencherai pour un problème cross-thread.
regarde ce tuto d'Mx : http://www.csharpfr.com/tutoriaux/OPERATIONS-CROSS-THREADS-UTILISATION-DELEGATIONS-SYNCHRONES-ASYNCHRONES_174.aspx


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Messages postés
20
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
18 décembre 2008

Merci de ton avis sebmafate.

Est-il possible qu'un problème Cross-thread mal géré :

1/ fasse déconner le Console.WriteLine ? (Tu as l'air de penser que oui...)
2/ ne soit pas relevé au niveau de l'execution ? Parce qu'il me semble que je les ai tous solutionnés (Grâce à ce tuto que j'ai sous le coude depuis plusieurs mois. ^^;) et VS ne me sort plus aucune exception...

Est-il possible qu'une programmation sous FW 1.x soit mal transposée au passage sous FW 2.0 c'est un peu ce que j'ai fait il y a quelques jours...

Merci.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
lol... donc, toujours vérifier la longueur de la chaine :p


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]