@Impeeeery
жуй. куй.

RichTextBox для WPF шустрее, чем родной?

В окне отображаю лог довольно длительного процесса (5000 операций в среднем по 10 строчек каждая, потом будет и больше вплоть до 500k строчек)

Как известно, plain text убог :) например, на MacOS в стандартном блокноте только rich text.
вот и у меня для удобства чтения и для красоты часть строчек имеет свой цвет, часть кусков текста выделяется желтым маркером, возможно даже будут ссылки или и того круче - спойлеры из UIElement.

Но после того, как строк накопится много, лог тормозит и на выделение его кусков мышью (причем кусков совсем маленьких) и - что самое неприятное - на само добавление строк.

Есть ли что-то шустрее?

Решил попробовать три варианта - Syncfusion, Telerik и ComponentOne - и замерить. И ни один не заработал вообще.
Видно, не мой день.
(С первым разобрался, сделал все по аналогии с оригиналом, все работает, но строки добавленной не видно.
Второй вылетает при простом добавлении самого rtb в пустое окно свежесозданного проекта точь-в-точь по мануалу Getting started.
Со третьим разобрался, сделал все по аналогии с оригиналом, все работает, но строки добавленной не видно.
Пишу в саппорты...)

Единственным заработал AvalonEdit, но он заточен под подсветку синтаксиса, и я не понял, как в нем просто взять и задать шрифт для такого-то участка. И примитивный он какой-то по виду.

Интересно имеет ли вообще смысл что-то искать?
  • Вопрос задан
  • 496 просмотров
Пригласить эксперта
Ответы на вопрос 2
DarkRaven
@DarkRaven
разработка программного обеспечения
Основная проблема в том, что вы загружаете большой кусок данных в текстовое поле. Почему бы вам не подойти к данной проблеме с другой стороны - к примеру, не использовать Grid с постраничной навигацией или же тот же RichTextBox, но данные в тем будут выводиться по страницам. Так же, можно добавить "подгрузку" данных, подписавшись на событие прокрутки - если дошли до, скажем, 75% строк, подгрузить данные, в первые блок выгрузить после достижения 100%.
Ответ написан
Griboks
@Griboks Куратор тега C#
Вы серьёзно хотите добавить в свою программу многомиллионный лог с прокруткой? Хотел бы я посмотреть, как вы этот лог читаете) Лог на то и есть лог, что его никто не читает при нормальной работе приложения. А если случится ошибка, просматривать миллионный строчек ради file io exception смысла не имеет. Не пишите в лог все подряд и сохраняйте плчаще в оьдельныеифайлы+вообще не выводите их. Для нормальной программы 90%. таких логов - файлопомойка, занимающая место.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы