Какой лучший способ запустить функцию, синтаксис которой выделяет текст в текстовом поле (слева от = красный, справа от = синий). Я спрашиваю, потому что у меня было извлечение данных в потоке CommandTask, а затем было выполнено выделение в FinishCommand (в потоке пользовательского интерфейса), и это, похоже, сработало, но немного заблокировало бы пользовательский интерфейс, в то время как выделение выделилось.
Итак, я попытался поместить код подсветки в специальную функцию RichTextBox Invoke (таким образом, потокобезопасный) и переместил вызов функции в поток. Это также сработало, но по какой-то причине было на 4-8 секунд медленнее; это не имеет смысла для меня, потому что это точно такой же код.
Наконец, я попытался создать временный RichTextBox в потоке, вставить полученный текст и выделить его. Затем все, что делала функция Invoke, это передавали RTF к реальному RichTextBox, но в этом случае по какой-то причине RTF не совсем правильный, его цвет смещается на 2 каждый раз, например: R = красный, B = синий , X = черные символы
Строка 1. RRRRXBBBB (правильно)
Строка 2. XXRRRRBBB (раскраска смещена на 2 вправо)
Строка 3. XXXXRRRRX (смещено на 4 вправо и т. Д.)
Итак, мой общий вопрос: какой подход лучше, почему потоковая обработка одного и того же кода медленнее, а если подход 3 лучший, что происходит с этим странным изменением цвета. Спасибо!