Bonsoir à tous,
J'ai un soucis concernant une DataListView bindée sur une DataTable. Je reçois en flux continu par TCP des data, qui sont des messages formatés en XML, que je traite puis ajoute dans ma DataTable. La listView étant bindée sur ma DataTable, celle-ci raffraîchit dès que je reçois un message. En flux continu, je dois recevoir un peu près 3000 messages à la seconde
Le problème est qu'à un moment donné ça freeze complètement l'UI...logique. J'ai essayé de capter l'Event de refresh du control mais apparemment cela est impossible.
Du coup, la solution (crade) que j'ai réalisé pour le moment c'est de créer un thread auxiliaire qui tourne en boucle et bind, toutes les 200 ms, une copie temporaire de ma DataTable. Cela marche très bien jusqu'à environ 5 mn de fonctionnement. Après ça, l'application rame comme y'a pas mais ne crash pas. Je regarde le gestionnaire des tâches de Windows et attention, tenez vous bien !! Quasiement 1,5 Go de RAM utilisée
A mon avis le problème est que l'application met dans le stack tous ces bind avec une copie de la DataTable à un instant T afin de le réaliser de manière asynchrone. Du coup arrivé à un moment donné, Windows n'arrive plus à suivre ...
Une idée pour régler ce fichu problème ?
Partager