В моем приложении на C # (.NET 2.0) есть переменная StringBuilder объемом 2,5 МБ. Очевидно, я не хочу копировать такой большой буфер в большее пространство буфера каждый раз, когда он заполняется. К этому моменту в буфере в любом случае так много данных, что удаление старых данных является приемлемым вариантом. Может ли кто-нибудь увидеть какие-либо очевидные проблемы с тем, как я это делаю (т.е. я представляю больше проблем с производительностью, чем решаю), или все выглядит хорошо?
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);
}
РЕДАКТИРОВАТЬ: Дополнительная информация:
В этом приложении новые данные принимаются очень быстро (порядка миллисекунд) через последовательное соединение. Я не хочу заполнять многострочное текстовое поле этой новой информацией так часто, потому что это снижает производительность приложения, поэтому я сохраняю ее в StringBuilder
. Время от времени приложение копирует содержимое StringBuilder
в текстовое поле и стирает содержимое StringBuilder
.