cyrare
Messages postés20Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention18 décembre 2008
-
13 mars 2006 à 17:39
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 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...
cyrare
Messages postés20Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention18 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.
keikun59
Messages postés73Date d'inscriptionmardi 15 mars 2005StatutMembreDernière intervention18 novembre 20101 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 :)
cyrare
Messages postés20Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention18 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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cyrare
Messages postés20Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention18 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.
cyrare
Messages postés20Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention18 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...