Problème avec Console.WriteLine

Résolu
cyrare Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 décembre 2008 - 13 mars 2006 à 17:39
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 15 mars 2006 à 15:22
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 !
A voir également:

8 réponses

cyrare Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 décembre 2008
15 mars 2006 à 15:20
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+
3
keikun59 Messages postés 73 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 18 novembre 2010 1
13 mars 2006 à 17:43
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
0
cyrare Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 décembre 2008
13 mars 2006 à 17:50
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
0
cyrare Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 décembre 2008
13 mars 2006 à 17:52
(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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cyrare Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 décembre 2008
13 mars 2006 à 18:07
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...
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 mars 2006 à 09:17
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#]
0
cyrare Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 décembre 2008
14 mars 2006 à 11:22
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.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 mars 2006 à 15:22
lol... donc, toujours vérifier la longueur de la chaine :p


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Rejoignez-nous