22 / 20 / 5
Регистрация: 29.02.2016
Сообщений: 590
|
|||||||||||
1 | |||||||||||
Многопоточное обновление richTextBox28.08.2016, 15:55. Показов 1985. Ответов 3
Метки нет (Все метки)
джентельмены, есть код:
0
|
28.08.2016, 15:55 | |
Ответы с готовыми решениями:
3
Обновление RichTextBox Обновление RichTextBox, при добавлении текста Многопоточное обновление label Обновление RichTextBox из другого класса |
28.08.2016, 18:50 | 2 |
Сделайте одну точку входа для всех потоков, не завязанную на контрол UI.
Потоки. Синхронизация потоков
0
|
22 / 20 / 5
Регистрация: 29.02.2016
Сообщений: 590
|
||||||
29.08.2016, 16:59 [ТС] | 3 | |||||
Не по теме: Ребят, уже много времени ждал ответов, но не было даже глупых ответов!
Проблема, в виде ошибки: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'richTextBox2' не из того потока, в котором он был создан. Метод решения: мне подсказали использовать lock(), но я не понял, как... Возможно, вы знаете другой способ, который больше подходит сюда, так как вы очень опытные, и вас много. Очень буду рад любому ответу, особенно - дельному!
0
|
29.08.2016, 17:44 | 4 |
Качество ответов напрямую зависит от качества вопроса.
Дельный ответ - код в топку, автора под суд Ричтекстбокс это контрол для отображения плоского текста. Он НЕ используется для хранения массивов строк (как у вас), НЕ используется для организации вычислений (как у вас), НЕ используется для хранения результатов вычислений (угадайте как где?). Вам нужно: 1) Создать модель данных. Если у вас исходный данные это список строк, значит ваша модель это отдельный класс, в ктором есть поле типа ConcurrentQueue<string> содержащее входную очередь обрабатываемых данных. 2) Результаты вычислений складывать также в отдельное поле типа ConcurrentQueue<string>. 3) Вычисления производить в отдельном методе вашего класса данных. В методе в цикле многопоточно считывать данные из входной очереди, обрабатывать, помещать в выходную очередь. 4) Ах, да, ну и пользовательский интерфейс (который делается в последнюю очередь и не имеет никакого отношения к вашим расчетам). Делаете на форме два ListBox (или DGV или ListView). Отображаете в них данные в виртуальном режиме, привязываете их к вашим очередям строк. По таймеру (скажем раз в 100 мс) - обновляете количество строк в контролах, вызываете Invalidate().
1
|
29.08.2016, 17:44 | |
29.08.2016, 17:44 | |
Помогаю со студенческими работами здесь
4
Обновление RichTextBox из другого потока Обновление содержания textBox | richTextBox в цикле for При любой смене размера richTextBox-а растянуть текст на весь richTextBox Специальные символы в RichTextBox не учитываются при передаче в другой RichTextBox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |