Bonjour à tous.
Je travaille sur une application C#que je n'ai aps developpé moi-même.
Cette appli fait tout un tas de chose, et particulierement des traitements sur fichiers Excel. Mais de très gros fichiers Excel, facilement quelques dizaine de milliers de lignes sur plusieurs dizaines de colonnes. Avec en plus, plusieurs sheet, avec ces fameuse lignes et colonnes.
On a finit par me remonter des problèmes de plantage apparement dû à la taille des ces fichiers. En voulant reproduire les bugs, j'ai eu plusieurs type d'erreur :
- Out of memory
Au bout d'un moment de traitement, un pop up apparait et me balance un outofMemory Exception. C'est l'erreur la plus difficile à reproduire, car d'une part aléatoire, d'autre part ce sont souvent les autres bugs qui apparaissent avant.
Cette exception apparait toujours l'un d'un traitement de gros fichiers Excel, parfois 500k lignes.
- COM class factory et plein de thread Excel
L'erreur la plus courante.
Pendant le traitement, je vois beaucoup de task Excel qui se créées dans mon task manager.
Et il peu même parfois y en avoir plus.
Du coup à un moment donné j'ai un "Excel a cessé de fonctionner", puis l'appli stop son traitement avec
Ayant un peu regardé sur le net les problèmes de mémoire, je n'ai trouvé que des soucis en 32 bit, je suis en 64, je ne pense pas que ça vienne de là.
Mais je ne trouve nul part traces de souci de cet ordre avec du C# ou du traitement Excel. Du coup je ne sais pas bien quoi faire...
Je sais que dans le code, chaque ligne peut devenir un objet, et que ces objets peuvent être clonés, voire plusieurs fois. Mais j'ai du mal à penser que C# ne puisse gérer ça.
De plus, le plantage se fait après la mise en mémoire des Excel dans l'appli, j'ai du mal à faire le lien entre les thred Excel, alors que tout est supposé être chargé dans des tableaux/objets.
Merci de votre aide.
Partager