2010-04-13 2 views
1

Есть ли простой способ реализовать FIFO в элементе управления RichTextBox?Механизм FIFO в RichTextBox

На самом деле у меня есть инструмент для тестирования, который производит более 1000 строк в течение минуты, поэтому я хочу ограничить общее число строк и когда новая строка добавляет в элемент управления последнюю строку.

+0

Проблема в том, когда начинать удаление строк. Использование Lines.Count слишком дорого. Но становится легче, если вы можете гарантировать, что добавляется только одна строка. Нам нужны упрощения, чтобы дать вам хороший ответ, запишите их в свой вопрос. –

ответ

0

Сегодня я наткнулся на Infinite-Scroll design pattern. Я думаю, это может помочь.

OLD ОТВЕТ:

List<string> lines = new List<string>(); 

int max = 2; 

int n = 0; 

private void button1_Click(object sender, EventArgs e) 
{ 
    lines.Insert(0,n.ToString()); 

    richTextBox1.Text = string.Join("\n", lines.Take(max).ToArray<string>()); 

    n++; 
} 

Это очень простой FIFO. Также в List<string> l у вас будет журнал во все времена :)

+0

:(Это не так просто, есть много сценариев формирования, которые я должен сделать для каждой записи, и это будет коэффициент производительности, пожалуйста, рассмотрите максимальное значение = 10 000 –

+0

, это замедляет обработку, так как существует количество потоков, записывающих журналы, и вы знать, объект UI может быть доступен только из UI Thread :( –

0

Не ответ на ваш вопрос, но вы читаете все 1000 сообщений за минуту? Есть ли способ (или уже есть) для регистрации только сообщений с уровня. цитата из Явы:

* SEVERE (highest value) 
* WARNING 
* INFO 
* CONFIG 
* FINE 
* FINER 
* FINEST (lowest value) 

Например: обычно вы бы: сообщение 1 (отладка) и сообщение 2 (ТЯЖЕЛАЯ) Префикс каждой строки в соответствии с их уровнем:

  • 1: 1 сообщение
  • 7: сообщение 2

Теперь вы можете изменить свой инструмент тестирования для регистрации только определенного уровня. 7 журналов всего, 1 журнал всего 1 и т. Д. Результат меньше ненужного ведения журнала и считываемого вывода (например, 2 сообщения должны возникать сразу после друг друга, но из-за нарезания резьбы в журнале регистрируются 20 сообщений ...)