Managing StringBuilder Resources
- by Jim Fell
My C# (.NET 2.0) application has a StringBuilder variable with a capacity of 2.5MB. Obviously, I do not want to copy such a large buffer to a larger buffer space every time it fills. By that point, there is so much data in the buffer anyways, removing the older data is a viable option. Can anyone see any obvious problems with how I'm doing this (i.e. am I introducing more performance problems than I'm solving), or does it look okay?
tText_c = new StringBuilder(2500000, 2500000);
private void AppendToText(string text)
{
if (tText_c.Length * 100 / tText_c.Capacity > 95)
{
tText_c.Remove(0, tText_c.Length / 2);
}
tText_c.Append(text);
}
EDIT: Additional information:
In this application new data is received very rapidly (on the order of milliseconds) through a serial connection. I don't want to populate the multiline textbox with this new information so frequently because that kills the performance of the application, so I'm saving it to a StringBuilder. Every so often, the application copies the contents of the StringBuilder to the textbox and wipes out the StringBuilder contents.