J'ai une application C# qui lance une application console dans un processus séparé. Les deux applications communiquent via une connexion TCP, ainsi qu'une entrée/sortie standard (limitée). Le problème que je rencontre est que chaque fois que je "casse" dans le débogueur, il semble provoquer le blocage de l'application console. Si je laisse les applications seules, les deux fonctionnent très bien, et il semble y avoir aucun problème dans l'interaction entre eux. Mes recherches à ce jour semblent indiquer que je pourrais rencontrer une condition d'interblocage, en raison des tampons de sortie remplis. Comment puis-je vérifier que c'est effectivement le cas? Y a-t-il d'autres explications pour savoir ce qui causerait ce problème?Comment puis-je savoir si un processus suspendu est dû à des tampons remplis (TCP, stdin, stdout)?
Q
Comment puis-je savoir si un processus suspendu est dû à des tampons remplis (TCP, stdin, stdout)?
0
A
Répondre
1
Si vous pensez qu'un appel est bloqué quelque part, vous pouvez essayer de voir s'il existe une version asynchrone (avec un rappel); ou sinon, lancez-le manuellement à l'intérieur d'un thread, puis laissez le thread principal dormir dans une boucle jusqu'à un certain délai; et lancez une exception si elle ne se termine pas avant.
Aller asynchrone où je pourrais (facilement) faire semble avoir résolu le problème. – TreDubZedd