Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2019, 22:40   #1
Valimer
 
Регистрация: 05.11.2015
Сообщений: 9
По умолчанию Лагает label в потоках

Во вложениях при потоке возникает такая шляпа
При нескольких потоках / сворачивании или разворачивании формы начинает лагать вот так label

Код:
procedure TMyThread1.Execute;
begin
 
Inc(threads);
Fix(6,'');
 
cs.Enter;
if threads <= thr_count then
begin
inc(num_lines_phone);
if num_lines_phone>phoneList.Count-1 then num_lines_phone:=0;
selected_line:=num_lines_phone;
phonenumber:= phoneList[selected_line];
end ;
cs.Leave;
 
while work do Method1;
 
 
dec(threads);
if (threads = 0) then
begin
fix(4,'Работа завершена');
fix(5,'');
end;
Fix(6,'');
end;
 
{...}
 
procedure TMyThread1.dofix;
begin
if FI = 0 then
begin
inc(err);
Form1.Label3.Caption:= 'Ошибок: '+inttostr(err);
end;
if FI = 1 then
begin
inc(good);
Form1.Label5.Caption:= 'Отправлено: '+inttostr(good);
end;
if FI = 2 then
begin
inc(error);
Form1.Label2.Caption:='Не отправлено: '+inttostr(error);
end;
if FI = 3 then ShowMessage(SI);
if FI = 4 then
if log=True then
if hide_numbers_in_log = true then
form1.sMemo1.Lines.Add('['+TimeToStr(Time)+'] '+SI) else form1.sMemo1.Lines.Add('['+TimeToStr(Time)+'] ['+phonenumber+'] '+SI);
if FI = 5 then timer_on:=false;
if FI = 6 then Form1.Label6.Caption:= 'Потоков: '+inttostr(threads);
if FI = 7 then Form1.sMemo1.Lines.Add(SI);
if FI = 8 then Form1.Label7.Caption:= 'Сервисов на сервере: '+SI;
 
 
end;
 
{...}
 
procedure TMyThread1.Fix(I: Integer; s: string);
begin
  FI := I;
  SI := s;
  Synchronize(dofix);
end;
Изображения
Тип файла: jpg Mc_XZotSnd4.jpg (12.4 Кб, 83 просмотров)
Valimer вне форума Ответить с цитированием
Старый 17.05.2019, 09:20   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
При нескольких потоках / сворачивании или разворачивании формы начинает лагать вот так label
в потоке все самое интересное ( и приведенное на рисунке ) происходит здесь
Цитата:
Код:
while work do Method1;
и там очевидно что не fix(...)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.05.2019, 10:01   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Valimer
Показывайте модуль целиком. Критическая секция у вас где объявлена?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 17.05.2019, 12:09   #4
Valimer
 
Регистрация: 05.11.2015
Сообщений: 9
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  T: TStringList;
  s, s1: string;
begin
  txt_service := Tstringlist.Create;
  work := false;
  cs := TCriticalSection.Create;
  phoneList := Tstringlist.Create;
  ProxyList := Tstringlist.Create;
  User_list := TStringList.Create;
end;
Valimer вне форума Ответить с цитированием
Старый 17.05.2019, 12:12   #5
Valimer
 
Регистрация: 05.11.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
в потоке все самое интересное ( и приведенное на рисунке ) происходит здесь

и там очевидно что не fix(...)
не понял вас, дело конкретно не в работе потока, а в оформлении кода, я думаю так. VCL не использую в потоке, только через Synchronize
Valimer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ListView лагает при прокрутке загруженного списка FleXik Общие вопросы Delphi 18 04.07.2014 02:35
Флеш Текст +1 - Flash дна кнопка и один текст(Label), как сделать чтоб при нажатии на кнопку текст Label был Label.text + 1 quarty Общие вопросы Web 6 24.12.2013 15:13
лагает игра Kravec Компьютерное железо 4 25.03.2010 13:57
При расположении Label на компонентах, место под Label, не реагирует на событие onClick. NavigatorNeba Компоненты Delphi 3 15.11.2008 19:56
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23