Если парсинг SAX обязателен, JAXP является хорошим выбором. Я предпочитаю парсинг DOM и использую jdom, который кажется намного легче мне.
Проблема в том, что вы многократно и быстро добавляете (удаляете) по одному символу за раз. Одним из решений было бы буферизовать символы по мере их добавления и обновлять текстовое поле с большими интервалами (независимо от количества символов), например, каждые 250 миллисекунд.
Для этого потребуется:
Другой вариант - использовать как каждые 250 мс, так и каждые 100 символов, что бы ни случилось раньше. Но это, вероятно, еще больше усложнит код без какой-либо ощутимой выгоды.
Вы установили двойной- буферизация в главном окне?
этот код в конструкторе после вызова InitializeComponent добавит двойную буферизацию и, возможно, уменьшит мерцание.
this.SetStyle (
ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint |
ControlStyles.DoubleBuffer, true);
Вы пробовали SuspendLayout () / ResumeLayout () во всех операциях обновления?
Затем вы также можете вызвать Clear () в текстовом поле переназначьте усеченный текст.
Если вы попытаетесь реализовать какую-либо программу просмотра файлов журнала, вы можете вместо этого использовать ListBox.