![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Заранее извиняюсь, но этот вопрос упоминался в другой моей теме в разделе сетей. Просто там этот вопрос не в тему поэтому решил повтрить его тут.
у меня проблема такого рода: при создании потока он вешает приложение. загрузка цп 100%. в чем может быть проблема. читал много инфы по потокам но ничего не нашел. вот пример кода Код:
unit Unit3; interface uses Classes, sysutils; type mythread = class(TThread) name:string; i:longint; procedure showmsg1;//(i:longint); procedure showmsg2;//(i:longint); private { Private declarations } protected procedure Execute; override; end; implementation uses unit1; { Important: Methods and properties of objects in visual components can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure mythread.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { mythread } procedure mythread.showmsg1;//(i:longint); begin form1.Memo1.Lines.Append(inttostr(i)); end; procedure mythread.showmsg2;//(i:longint); begin form1.Memo2.Lines.Append(inttostr(i)); end; procedure mythread.Execute; { Place thread code here } begin while not terminated do begin inc (i); if name='1' then Synchronize(showmsg1); if name='2' then Synchronize(showmsg2); if i>10000 then terminate; end; end; end. а также часть кода из модуля Unit1 Код: t1:=mythread.Create(false); t1.name:='1'; t2:=mythread.Create(false); t2.name:='2'; //Application.ProcessMessages; Последний раз редактировалось Admin, 07.01.2010 в 12:28. |
#2
|
|||
|
|||
![]() Запустил задачку, у меня процессор был занят на 60% пока перересовывались Memo. Но так и должно быть вы же делаете перересовку 10 тыс. раз. Лучше сначала сформировать невидимый TStrings, а потом его передать в Memo.
|
#3
|
||||
|
||||
![]() И вообще не дело обращаться из потоков к визуальным элементам.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |