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

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();
     }
}
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 ?

Merci.

++