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

cyrare 20 Messages postés jeudi 14 avril 2005Date d'inscription 18 décembre 2008 Dernière intervention - 13 mars 2006 à 17:39 - Dernière réponse : sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention
- 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 !
Afficher la suite 

8 réponses

Répondre au sujet
cyrare 20 Messages postés jeudi 14 avril 2005Date d'inscription 18 décembre 2008 Dernière intervention - 15 mars 2006 à 15:20
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cyrare
keikun59 73 Messages postés mardi 15 mars 2005Date d'inscription 18 novembre 2010 Dernière intervention - 13 mars 2006 à 17:43
0
Utile
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
Commenter la réponse de keikun59
cyrare 20 Messages postés jeudi 14 avril 2005Date d'inscription 18 décembre 2008 Dernière intervention - 13 mars 2006 à 17:50
0
Utile
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
Commenter la réponse de cyrare
cyrare 20 Messages postés jeudi 14 avril 2005Date d'inscription 18 décembre 2008 Dernière intervention - 13 mars 2006 à 17:52
0
Utile
(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...
Commenter la réponse de cyrare
cyrare 20 Messages postés jeudi 14 avril 2005Date d'inscription 18 décembre 2008 Dernière intervention - 13 mars 2006 à 18:07
0
Utile
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...
Commenter la réponse de cyrare
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 14 mars 2006 à 09:17
0
Utile
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#]
Commenter la réponse de sebmafate
cyrare 20 Messages postés jeudi 14 avril 2005Date d'inscription 18 décembre 2008 Dernière intervention - 14 mars 2006 à 11:22
0
Utile
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.
Commenter la réponse de cyrare
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 15 mars 2006 à 15:22
0
Utile
lol... donc, toujours vérifier la longueur de la chaine :p


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.