Вторые сутки вожусь с проблемкой, если в memo/rich добавлять строку текста из события (можно назвать многопоточностью), то когда 1е событие текст еще не успело вставить весь а второе уже пришло - то строка обрывается на середине и вставляется вторая, как этого можно избежать??? Пример лага - создать 2 таймера, который будет через каждые 1ms добавлять строку "привет братва" а вторая "пока чуваки", и получится каша типу "привпока чувпривет братпока" Пробовал делать хитрее, ставил условие через переменную типу memo_adds:=True; memo1.values.add(text); memo_adds:=False; Если до этого места доходит код и в переменной УЖЕ был true - функция вызывается заново через 10ms, но этот способ временами путает местами строки, ибо если приходит 2-3-5 строчек и уходят "ждать" то друг по перед друга лезут + 1 на 50 строчек - всё-же умудряется влезть в предадущую строку, хз как, скорее всего в момент когда переменной присваивается true - проверяется и условие, и в итоге проходят оба..( Что посоветуете? мб есть какой-то компонент который сам будет защищать от одновременной передачи нескольких строчек, ставля их в очередь?
Крит секции? Если таймеры в одном потоке, то отлавливой событие(типа мемо готово дальше на себе рисовать), и по нему пиши. Типа пула текстов для записи делаешь, и по событию из него пишешь текст.
Советую класть строки в StringList и не использовать в потоках графические элементы интерфейса. А уже в секции синхронизации присваивать графическим элементам интерфейса текст из переменных типа текст.
Попробовал - нету никакого лага. Не нужны. ТС, используй метод Synchronize класса TThread, когда делаешь какую то работу с GUI из дополнительного потока. Никакие дополнительные переменные и т. д., не требуются.