Форум: "Потрепаться";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Внизпроблема с потоком TThread в XP Найти похожие ветки
← →
pound © (2005-11-23 22:47) [0]Имеется проблема с потоком TThread в XP, если я запускаю программу и при запуске активизирую поток, в котором пока ещё ничего не происходит, то программа сильно тормозит, приходится запускать её в режиме совместимости с Win98 (в таком варианте проблем не возникает). Как с этим бороться? На ум пока приходит только активизация потока с первой загрузкой данного потока. Но это ведёт к усложнению алгоритма, а это не желательно.
Активизация потока:
procedure TfmForm1.FormActivate(Sender: TObject);
begin
SprThr := MyThread.Create(False);
end;
Поток:
type
MyThread = class(TThread)
private
{ Private declarations }
protected
N: byte; //Счётчик
procedure Run;
procedure Execute; override;
end;
var
SprThr: MyThread;
Implementation
uses MainForm;
//==================================
begin //Run
if fmForm1.BoRun then //В данной ситуации BoRun := false
begin
……….
……….
end;
end; //Run
//==================================
procedure MyThread.Execute;
var i: byte;
begin //MyThread.Execute
{ Place thread code here }
repeat
for i := 0 to 7 do
begin
N := i;
Synchronize(Run);
end;
until False;
end; //MyThread.Execute
И ещё один вопрос. Как нормально прекратить работу потока?
procedure TfmForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
SprThr.Suspended := true; //Останавливаю поток
SprThr.Destroy; //Уничтожаю поток
end;
Как только доходит дело до SprThr.Destroy программа виснет.
Заранее благодарен, Андрей.
← →
MBo © (2005-11-24 06:47) [1]Из приведенного кода видно, что практически вся работа доп. потока сводится к вызову Synchronize(Run), что выполняется в основном потоке - отсюда и тормоза.
Для остановки потока нужно Execute сделать, как полагается - в виде цикла while not Terminated ...
Если установить у потока FreeOnTerminate, то его разрушение сведется просто к Terminate; Waitfor;
← →
sniknik © (2005-11-24 07:38) [2]http://delphimaster.net/view/1-1132773228/
← →
MBo © (2005-11-24 07:43) [3]Ага, уже увидел, что это спам ;)
← →
sniknik © (2005-11-24 07:58) [4]я тоже вчера не видел... иначе бы писать не стал.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c