Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с TThread... [D6, 2000]


pathfinder ©   (2005-12-17 22:54:00) 

Мастера, не подскажете в чем дело? В отдельном процессе запускается цикл, но при его выполнении интерфейс программы не откликается на клики мышки:( Что я делаю не так?

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, unit2, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   T1 : TMyThread;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
T1:=TMyThread.Create(false);
T1.Priority := tplowest;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
T1.Terminate;
end;

end.

unit Unit2;

interface

uses
 Classes;

type
 TMyThread = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
   procedure Run;
 end;

implementation

uses sysutils, unit1;

procedure TMyThread.Execute;
begin
Synchronize(run);
end;

procedure TMyThread.Run;
var i: integer;
begin
for i:=1 to 1000000 do Form1.caption:=inttostr(i);
end;

end.


Virgo_Style   (2005-12-18 11:26:00) [1]

pathfinder   (18.12.05 7:24) [2]

В данном случае никак, раз тебе нужна непрерывная работа с VCL. Ну или хотя бы

в Execute
for ... do
begin
 Syncronyse(Run);
 Sleep(10);
end;

а в Run просто присваивать Form.Caption.
Параметр в Run передать как св-во класса, например.


pathfinder   (2005-12-18 07:24:00) [2]

А как сделать, чтобы он выполнялся в отдельном потоке?


Delphi   (2005-12-18 00:06:00) [3]

Всё правельно(ИМХО), проблема в том что метод вызванный методом Synchronize, исполняется в основном потоке VCL.


Наверх

Титульная страница Поиск, карта сайта Написать письмо