Je travaille sur un programme qui lit à partir d'un port série, puis analyse, formate et affiche les informations de manière appropriée. Ce programme, cependant, doit être exécuté pendant plus de 12 heures et plus - en traitant constamment un flux de données entrantes. Je constate que pendant que je laisse mon application fonctionner pendant un moment, l'utilisation de la mémoire augmente à un taux linéaire - pas bon pour une utilisation de 12 heures.Lecture à partir de SerialPort & Memory Management - C#
J'ai mis en œuvre un enregistreur qui écrit les données binaires entrantes brutes dans un fichier - est-ce que je peux utiliser cette idée pour effacer mon cache mémoire à intervalles réguliers? C'est à dire. comment puis-je, de temps en temps, écrire dans le fichier journal de telle sorte que les données n'ont pas besoin d'être stockées en mémoire?
Également - y a-t-il d'autres aspects d'une application Windows Form qui contribueraient à cela? Par exemple. J'imprime les chaînes formatées dans une zone de texte, qui finit par afficher la chaîne entière. Parce que cela fonctionne depuis si longtemps, il affiche facilement des centaines de milliers de lignes de texte. Dois-je écrire ceci dans un fichier et effacer le texte? Ou autre chose?
Merci beaucoup! L'objet String actuel a une longueur maximale de 17 caractères. Chaque fois que la chaîne est ajoutée à l'affichage, nulled (string = "";), définit une nouvelle valeur et est ajoutée. Ensuite, rincez et répétez. Ainsi, la chaîne réelle ne reçoit pas trop grand, mais l'affichage dans le champ de saisie est parce que la chaîne est constamment ajouté à l'affichage en cours. Cela change-t-il quelque chose? – Slim
Non Comment est souvent mis à jour la chaîne? (Combien de temps dure la zone de texte se?) – SLaks
Le dispositif est un taux de transmission 9600 envoyer en permanence des informations.J'utilise le thread _dataReceived() pour gérer les données entrantes - je ne suis pas sûr que les détails de vitesse de ce que cela fonctionne soient, disons simplement que c'est beaucoup et rapidement. En quelques minutes, j'ai ~ 25K lignes (chaque 17 caractères de long) étant affiché. J'ai fait un test rapide où toutes les 50 itérations (de l'ajout de la chaîne 17char à l'affichage), j'efface l'affichage. Cela a montré des améliorations TREMBLANTES. Il fonctionne actuellement depuis 17 minutes et a à peine augmenté l'utilisation de mem selon taskmgr. Je pense que le problème est résolu .. merci beaucoup. – Slim