J'écris une application dans vb.net 2005. L'application lit une feuille de calcul dans un DataSet avec ADO.NET et utilise une colonne de cette table pour remplir un ListBox. Lorsqu'un élément ListBox est sélectionné, l'utilisateur recevra des informations détaillées sur l'enregistrement sélectionné.Problèmes liés à l'énorme surcharge du processeur
Une partie de cette information ne se trouve pas dans le DataSet. Je dois comparer une colonne de la feuille de calcul avec plusieurs sources de données externes pour déterminer la nature de l'enregistrement en question. Voici où j'ai mon problème.
Cette comparaison doit effectuer une recherche sur des lignes de 9,5 m dans une table SQL à un moment donné. J'ai vérifié et il n'y a aucun moyen de "rétrécir" la requête car je ne recherche déjà que des données absolument essentielles.
Ce qui se passe, c'est que l'application ne fait jamais rien de visible. L'utilisation du processeur peut atteindre 100%, quel que soit son état d'avancement, et les performances du système deviennent presque insupportablement lentes.
Quelqu'un peut-il suggérer une façon dont je peux améliorer cette situation pendant que cette requête massive est en cours d'exécution? EDIT: J'allais à l'origine écrire le contenu des lignes de 9.5m dans la table de la base de données dans un fichier texte que je lirais alors, mais après des lignes de 6.5m, j'ai obtenu une exception OutOfMemoryException.
Pourriez-vous préciser quand exactement l'utilisation du processeur tire jusqu'à 100%, c.-à-d. Que fait votre code pour le provoquer? Le profilage peut aider. – EMP
L'utilisation du processeur monte en flèche lorsque l'application accède à la base de données. Je l'ai défini pour exécuter une requête SQL filtrée par la valeur du champ que je recherche. Si des résultats sont trouvés, un DataSet a rempli ces résultats, sinon, le DataSet reste Nothing. C'est ici que le processeur atteint son maximum. Je l'ai laissé en cours d'exécution une ou deux fois et il finit par lancer une exception OutOfMemoryException. –