Salut !
J'ai écris une méthode qui affiche du contenu dans une richTextBox. En fait c'est le contenu d'une mémoire donc j'affiche l'adresse, les données hexa, les données ASCII comme le fait un éditeur hexdécimal.
Quand le contenu de ma mémoire est peu important ça fonctionne très bien mais lorsque que je veux afficher une mémoire d'une taille de 60ko j'ai une "CLR error" et le débugger croit que mon application a planté parce que le traitement est long...
Voici mon code
Quelqu'un a-t-il déjà rencontré ce problème ? Que puis-je faire pour améliorer mon code et le rendre plus rapide ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 //Affichage du contenu de la mémoire private void memory_display(firmware_c.MEMORIES memory, byte[] bytebuffer) { UInt16 memstart = 0; UInt32 memlength = 0; RichTextBox currentRichTextBox = richTextBox_memory; //je vous épargne le calcul de memlength (256 < memlength < 61184) //Conversion du tableau de byte en tableau de char ASCIIEncoding ASCIIEncoder = new ASCIIEncoding(); char[] charbuffer = ASCIIEncoder.GetChars(bytebuffer); //Affichage du contenu de la mémoire currentRichTextBox.Clear(); for (int j = 0 ; j < (memlength / 16) ; j++) { //Affichage de l'adresse currentRichTextBox.AppendText("@" + (memstart + j * 0x10).ToString("X4") + " | "); //Affichage hexadécimal d'une ligne for (int i = 0 ; i < 16 ; i++) { currentRichTextBox.AppendText(bytebuffer[i + (16 * j)].ToString("X2") + " "); } //Séparateur currentRichTextBox.AppendText("| "); //Affichage ASCII d'une ligne for (int i = 0 ; i < 16 ; i++) { currentRichTextBox.AppendText("" + charbuffer[i + (16 * j)]); } currentRichTextBox.AppendText("\n"); currentRichTextBox.Update(); } }
Merci.
++
Partager