[C#, RichTextBox] CLR error lors d'un affichage dans une RichTextBox
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:
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.
++